当前位置: 首页 > 知识库问答 >
问题:

如何用log4j创建多个不同内容的日志文件

邹齐智
2023-03-14
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/home/dhanushka/Documents/log4j.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n

log4j.appender.testng=org.apache.log4j.RollingFileAppender
log4j.appender.testng.File=/home/dhanushka/Documents/TestNGlog.log
log4j.appender.testng.MaxFileSize=1MB
log4j.appender.testng.MaxBackupIndex=1
log4j.appender.testng.layout=org.apache.log4j.PatternLayout
log4j.appender.testng.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n

# Root logger option
log4j.rootLogger=INFO, file, admin, stdout, testng


# Log everything. Good for troubleshooting
log4j.logger.org.hibernate=INFO

# Log all JDBC parameters
log4j.logger.org.hibernate.type=ALL
public class VerifyAmenities {

private static Logger defaultLogger = Logger.getLogger("file");
private static Logger testNGlogger = Logger.getLogger("testng");
.
.
}
defaultLogger.info("This is default Logger");
testNGlogger.info("This is testNG Logger");

共有1个答案

翟浩穰
2023-03-14

最后我找到了这样做的方法。

# Root logger option
log4j.rootLogger=TRACE, stdout, file

log4j.category.testngLogger=DEBUG, testng
log4j.additivity.testngLogger=false

rootlogger中,它就像是所有日志的父。默认情况下继承。根记录器选项应该是这样的。
如果additivity设置为false,则它将永远不会转到rootlogger

log4j.xml文件中,如下所示。

<logger name="testngLogger" additivity="false">
    <level value="DEBUG" />
    <appender-ref ref="testngLogger" />
</logger>

<root>
    <priority value="INFO" />
    <appender-ref ref="CONSOLE" />
    <appender-ref ref="fileLogger" />
</root>
 类似资料:
  • 问题内容: 有没有一种方法可以配置log4j,以便将不同级别的日志记录输出到不同的附加程序? 我正在尝试设置多个日志文件。主日志文件将捕获所有类的所有INFO及以上消息。(在开发中,它将捕获所有DEBUG和以上消息,以及特定类的TRACE。) 然后,我想要一个单独的日志文件。该日志文件将捕获特定类子集的所有DEBUG消息,而忽略其他任何类的所有消息。 有没有办法得到我想要的? 问题答案: 这应该使

  • 我想创建单独的日志文件,一个用于信息,另一个用于调试,我正在使用下面的log4j.property文件,请建议如何修改不同文件中的两级日志记录, 我想请求请发送我更新的属性文件而不是给我搜索或探索的指针,因为我已经花了3-4个小时在Google和StackOverflow上搜索这个解决方案, 提前道谢。

  • 大家好,我的社区, 我正在编写一个多线程应用程序,其中需要使用log4j为每个线程输出一个日志文件。理想情况下,我希望为每个线程运行一个单独的日志实例。我正在辩论我应该如何处理这个问题。因为每个日志实例的文件输出位置不同,所以我需要更新每个实例的属性。现在,我正在尝试创建一个新的记录器,将新属性设置到属性对象中,并使用

  • 我很高兴地使用SLF4J和logback和使用2个附加为根记录器。 stdout的调试级别 文件的信息级别 所有日志都需要成为输出的一部分(因此需要根记录器)。

  • 我试图为不同的包设置单独的日志文件。我使用一个包装类的记录器。我的应用程序中的每个类都调用相同的包装器类。我的包装类: 这就是所谓的: 有没有办法配置log4j,以便将不同包的日志记录输出到不同的文件? 谢谢! 编辑: 这是我的文件:

  • 问题内容: 我正在尝试配置log4j以将消息记录到文件中。现在,确实使用我提供的名称创建了该文件,但是日志未写入该文件。我的代码: 我文件的内容: 运行此命令时,将在控制台中获得以下输出: 该文件确实在我的主目录中创建。但是它是空的。 有什么想法我做错了吗?我正在使用log4j 1.2.17版。 问题答案: 输出似乎是Java标准日志记录框架(JUL)发出的默认格式。 因此,有两种可能性(想到):