我使用.property文件在特定路径中创建日志文件,但我使用它创建单个文件。以下是我的属性文件代码:
status = error
dest = err
name = PropertiesConfig
property.filepath= /ap
property.filename =${filepath}/ai.log
property.filename1 =${filepath}/file1.log
property.filename2 =${filepath}/file2.log
filter.threshold.type = ThresholdFilter
filter.threshold.level = debug
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.file.type = RollingFile
appender.file.name = RootFile1
appender.file.fileName = ${filename}
appender.file.filePattern = ${filepath}/%d{yyyyMMdd}/cpl.mw.%d{yyyyMMdd}.%i.log.gz
appender.file.layout.type = PatternLayout
#appender.file.layout.pattern = %d %p %C{1.} [%t] %m%n
appender.file.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.file.policies.type = Policies
appender.file.policies.time.type = TimeBasedTriggeringPolicy
appender.file.policies.time.interval = 1
appender.file.policies.time.modulate = true
appender.file.policies.size.type = SizeBasedTriggeringPolicy
appender.file.policies.size.size=50MB
appender.file.strategy.type = DefaultRolloverStrategy
appender.file.strategy.max = 20
appender.rolling1.type = RollingFile
appender.rolling1.name = RollingFile1
appender.rolling1.fileName = ${filename1}
appender.rolling1.filePattern = ${filepath}/%d{yyyyMMdd}/cpl.mw.%d{yyyyMMdd}.%i.log.gz
appender.rolling1.layout.type = PatternLayout
#appender.rolling1.layout.pattern = %d %p %C{1.} [%t] %m%n
appender.rolling1.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.rolling1.policies.type = Policies
appender.rolling1.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling1.policies.time.interval = 1
appender.rolling1.policies.time.modulate = true
appender.rolling1.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling1.policies.size.size=50MB
appender.rolling1.strategy.type = DefaultRolloverStrategy
appender.rolling1.strategy.max = 20
appender.rolling2.type = RollingFile
appender.rolling2.name = RollingFile2
appender.rolling2.fileName = ${filename2}
appender.rolling2.filePattern = ${filepath}/%d{yyyyMMdd}/cpl.mw.%d{yyyyMMdd}.%i.log.gz
appender.rolling2.layout.type = PatternLayout
appender.rolling2.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.rolling2.policies.type = Policies
appender.rolling2.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling2.policies.time.interval = 1
appender.rolling2.policies.time.modulate = true
appender.rolling2.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling2.policies.size.size=50MB
appender.rolling2.strategy.type = DefaultRolloverStrategy
appender.rolling2.strategy.max = 20
loggers
logger.name=file1
logger.level = debug
logger.additivity = true
logger.appenderRefs = rolling1,stdout
logger.appenderRefs.level = debug
logger.appenderRef.rolling1.ref = RollingFile1
logger.appenderRef.stdout.ref = STDOUT
logger.name=file2
logger.level = debug
logger.additivity = true
logger.appenderRefs = rolling2
logger.appenderRefs.level = debug
logger.appenderRef.rolling2.ref = RollingFile2
上面的代码是我的xyz.properties文件,我想使用这个配置文件创建多个日志。我的属性配置文件创建多个文件,但不将不同的不同日志放在日志文件中。我使用下面的代码从Java调用它:
private static final Logger logCommon = LogManager.getLogger("file1");
private static final Logger logAnalytics = LogManager.getLogger("file2");
public static void main(String[] args) throws Exception {
logCommon.info ("file1 Need it save into commons.log file");
logAnalytics.info ("file2 Only save into analytics.log file");
}
2018-01-22 12:52:23 INFO file2:301-file2 Only save to analytics.log file
log放入两个日志文件。
我参考以下链接:
log4j2:为多个日志动态创建日志文件
Log4j2的RoutingAppender的通配符模式
如何用log4j2(xml中的MDC)在不同的文件中编写不同的日志?
http://logging.apache.org/log4j/2.x/manual/extending.html
我参考了以下链接,但没有得到任何解决方案:
如何在log4j2中实现多文件追加
如何避免slf4j日志中出现多个日志文件?
log4j2-在weblogic中生成特定于应用程序的日志文件
如何用log4j创建多个不同内容的日志文件
在此输入链接说明
.properties文件的log4j2 KeyValuePair
如何在log4j2中创建自定义追加器?
在log4j2.properties中配置异步记录器
如何在Log4J2中创建自定义的RewritePolicy?
如何在log4j2属性中设置类的日志级别
增加log4j2中OnStartupTriggeringPolicy上的文件索引
如何配置log4j2 xml格式的当前工作目标目录的日志文件路径
如何在log4j2 xml中配置RestTemplate调试日志记录
在iPhonehtml" target="_blank">应用程序中创建多个日志文件
Log4j2使用多个appender和logger
如何在log4j2中编程创建多个日志文件?
如何在log4j2中编程创建多个日志文件?
如何在log4j2中指定日志文件
在log4j2属性文件中将单独的日志级别记录到单独的文件中
无法使用log4j2中的路由追加器基于ThreadContext映射值创建多个日志文件
如何在log4j2中创建自定义滚动文件附加器-自定义文件名
使用log4j2的多个线程的不同日志文件
Log4j2 YAML生成多个日志文件问题
如何使用log4j创建多个日志文件
Log4j2-以编程方式重写日志文件
如何在log4j2中创建滚动文件附加插件
使用下面的配置,并调用addLogger(),只要您想与完全限定的路径一起使用
public static void addLogger(String parentPath) throws SecurityException, IOException {
try {
InputStream in = ConfiguratorHelper.class.getResourceAsStream("/resources/mylogging.properties");
LogManager.getLogManager().readConfiguration(in);
} catch (SecurityException | IOException e1) {
e1.printStackTrace();
}
logger.setLevel(Level.FINE);
logger.addHandler(new ConsoleHandler());
logger.addHandler(new MyHandler());
try {
//FileHandler file name with max size and number of log files limit
Handler fileHandler = new FileHandler(path, 1000000, 10);
fileHandler.setFormatter(new MyFormatter());
fileHandler.setFilter(new MyFilter());
logger.addHandler(fileHandler);
logger.log(Level.CONFIG, "Config data");
} catch (SecurityException | IOException e) {
e.printStackTrace();
}
}
public class MyFilter implements Filter {
@Override
public boolean isLoggable(LogRecord log) {
//don't log CONFIG logs in file
if(log.getLevel() == Level.CONFIG) return false;
return true;
}
}
public class MyFormatter extends Formatter {
@Override
public String format(LogRecord record) {
return record.getThreadID()+"::"+record.getSourceClassName()+"::"
+record.getSourceMethodName()+"::"
+new Date(record.getMillis())+"::"
+record.getMessage()+"\n";
}
}
public class MyHandler extends StreamHandler {
@Override
public void publish(LogRecord record) {
//add own logic to publish
super.publish(record);
}
@Override
public void flush() {
super.flush();
}
@Override
public void close() throws SecurityException {
super.close();
}
}
请为两个命名记录器设置additivity=false
。
另外,添加一个根记录器配置,告诉Log4j2除了“file1”和“file2”记录器之外,将日志记录调用发送到何处:
rootLogger.level = info
rootLogger.appenderRef.stdout.ref = STDOUT
另外,给您的命名记录器一个唯一的前缀:
logger.aaa.name = file1
logger.aaa.additivity = false
logger.aaa.level = debug
logger.aaa.appenderRef.rrr.ref = RollingFile1
logger.bbb.name = file2
logger.bbb.additivity = false
logger.bbb.level = debug
logger.bbb.appenderRef.sss.ref = RollingFile2
问题内容: 我当前正在创建一个可以包含模块的系统(将它们视为插件),其中每个模块可以拥有自己的专用日志。 我想使用log4j2项目进行日志记录,但是文件附加器似乎有些麻烦。 主项目(整个模块的模块加载器和“核心”)应具有自己的日志文件,而模块应具有自己的日志文件(如)。 通过阅读有关追加程序的文档,我发现了该类,并且我将使用它。直到我发现不能简单地将追加器添加到由创建的默认记录器中。 LogMan
我目前正在创建一个系统,可以有模块(把它们看作插件),其中每一个都可以有自己的日志,专用的。 我想使用log4j2项目进行日志记录,但我似乎在文件附加符方面遇到了一些麻烦。 主项目(模块加载器和整个事情的“核心”)应该有自己的日志文件,而模块应该有自己的日志文件(像)。 即使搜索也没有给我提供任何接近的解决方案,我找到的只是xml配置中预定义的文件日志--这不是我想要的。 感谢你的阅读;即使是最轻
我想创建单独的日志文件,一个用于信息,另一个用于调试,我正在使用下面的log4j.property文件,请建议如何修改不同文件中的两级日志记录, 我想请求请发送我更新的属性文件而不是给我搜索或探索的指针,因为我已经花了3-4个小时在Google和StackOverflow上搜索这个解决方案, 提前道谢。
我有将日志保存到文件配置,但日志会附加到现有内容。我想创建总是新的文件。我怎么能那样做? 我的log4j2.xml:
我正在使用带有log4j2的Spring Boot1.5.9,当我测试日志记录功能时,创建了日志文件,但没有将日志写入其中,而控制台日志记录程序运行良好。请在pom.xml&log4j2.properties配置下面找到。 log4j2.properties文件: