我有一个要求,我需要创建日志文件,以便所有基于标签(最好是文本)的日志都需要记录到相应的日志文件中。
例如,
我有关于苹果,橙子和芒果的日志。
logger.info("Apples: They are red in color");
logger.info("Oranges: They are orange in color");
logger.info("Mangoes: They are yellowish in color");
根据我的要求,第一个日志应记录到Apples.log,第二个日志应记录在Oranges.log中,第三个日志应记录在Mangoes.log中]
日志文件应动态创建。
下面显示的是我的logback.xml
文件文件<statusListener class="ch.qos.logback.core.status.NopStatusListener"/> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <Pattern> %d %-5p - %marker%m%n </Pattern> </encoder> </appender> <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender"> <discriminator> <key>fruitName</key> <defaultValue>Common_logs</defaultValue> </discriminator> <sift> <appender name="FILE-${instanceName}" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>./Logs/${fruitName}/${instanceName}.log</fileNamePattern> <maxHistory>50</maxHistory> <cleanHistoryOnStart>false</cleanHistoryOnStart> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%d %-5p - %m%n</pattern> </encoder> </appender> </sift> </appender> <logger name="AssetInstanceService" level="info" additivity="false"> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE"/> <appender-ref ref="SIFT" /> </logger> <root level="info"> <appender-ref ref="SIFT" /> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE"/> </root> </configuration>
下面是我的LogManager.java
package Data; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.joran.JoranConfigurator; import ch.qos.logback.core.joran.spi.JoranException; public class LogManager { static String configFile = "./logback.xml"; private static Logger _logger = LoggerFactory.getLogger(LogManager.class); private static boolean _isInitialized = false; private LogManager() { } public static Logger Instance() { if (_logger == null) { _logger = LoggerFactory.getLogger(LogManager.class); } return _logger; } public static Logger Instance(String instanceName) { if (!_isInitialized) { if (!CommonMethods.CheckFileExist(configFile)) { configFile = "../logback.xml"; if (!CommonMethods.CheckFileExist(configFile)) { return null; } } LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); JoranConfigurator configurator = new JoranConfigurator(); lc.reset(); configurator.setContext(lc); try { configurator.doConfigure(configFile); MDC.put("fruitName", instanceName); } catch (JoranException e) { System.out.println(e); } _isInitialized = true; } if (_logger == null) { _logger = LoggerFactory.getLogger(LogManager.class); } return _logger; } }
这里是在我通过main方法初始化记录器时运行jar文件时创建的日志。
但是我需要根据日志中的标记或ID创建具有不同名称的不同日志文件。
我有一个要求,我需要创建日志文件,以使所有基于标签(最好是文本)的日志都需要记录到相应的日志文件中。例如,我有关于...