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

如何配置log4j和logback以正确地登录到一个文件中?

钱瑞
2023-03-14

我有一个java web应用程序,它使用logback和slf4j进行日志记录。并且这个项目有一个依赖项jar(它是一个子项目)。这个依赖项jar使用org.apache.log4j.logger进行日志记录。所有日志必须放入一个日志文件中。我的问题是,我用jar文件中的代码记录的任何东西都没有写入日志文件。最初我有logback.xml。为了解决上述问题,我在web应用程序中添加了log4j.properties文件。它解决了我的问题,现在我可以在一个文件中看到所有的日志。

同样,我的新probelm是:早些时候,日志文件根据logback.xml中的滚动策略每天滚动。现在它不滚动了。即使我在log4j.properties中配置了与logback.xml中的滚动策略匹配的滚动策略,滚动也不会发生。

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=SOME_PATH/logs/studentApp.log
log4j.appender.file.rollingPolicy = org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.file.rollingPolicy.FileNamePattern = SOME_PATH/logs/studentApp.%d{yyyy-MM-dd}.log    
log4j.appender.file.maxBackupIndex=14
log4j.appender.file.threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%-5p] %d %c - %m%n
log4j.rootLogger=DEBUG,file

共有1个答案

钱安和
2023-03-14

假设您的滚动策略是正确的,那么log4j可能会选择错误的配置。log4j查找类路径中的第一个配置文件(首先是.xml,然后是.properties),如果它碰巧是来自某个依赖项的配置,则滚动策略将不起作用。

要测试这一点,可以在tomcat启动脚本中添加一个系统属性-dlog4j.configuration=...和您的配置路径。或者简单地将日志级别设置为跟踪/调试,看看它是否影响输出。

编辑:您的log4j配置看起来不错,但是缺少日期模式。尝试添加log4j.appender.file.datePattern='.'yyyy-mm-dd-hh-mm(注意,为了便于测试,我将模式设置为每分钟翻转一次)

Edit:您可以删除包含rollingpolicymaxbackupindex的每一行-在本例中,这些行将不会被选中

 类似资料:
  • 我正在尝试使用log4j在我的tomcat安装的不同文件中记录某些消息,但是尽管它会在我的rootLogger上记录,但它不会在我创建的单独文件上记录。 这是我的log4j.properies文件,其中我尝试使用的文件是dataflow_logging.log: 我的WebService的属性文件: 初始化数据流记录器的方法: 非常感谢你的帮助!

  • 我们的Java应用程序在Logback上使用SLF4J来记录错误消息。在我们的回复中。xml,我们为错误日志定义了一个appender,以及一个指定包层次结构顶层的记录器。 我们正在将记录数据的功能添加到不同的日志文件中。我创建了一个类来处理这个日志记录,我向logback.xml添加了一个新的appender和一个新的logger。新的logger指定了我创建的新类的完全限定包名称(以及addt

  • 我试图在Scala中反转包含unicode字符的字符串。我想找到最快的方法。到目前为止,我有以下代码: 在我的macbook 2013上,我得到了以下结果: 但我觉得这些数字是假的。我该如何使用scala、sbt和JMH库对函数进行适当的基准测试? 注意:正如评论中指出的,Java中的微基准测试是一项严肃的业务。请参阅(我如何在Java中编写正确的微基准测试?)和https://groups.go

  • Folder1--->log1.log                     log2.log                  log3.log Folder2--->log1.log                     log2.log                  log3.log 我想让我的记录器独立地登录到文件中。 到目前为止,我已经创建了3个RollingFileAppend

  • 问题内容: 我的故事: 我想做的事情像将行记录到文件的最简单的log4j记录器一样简单。我发现了几个具有某些功能的示例,但没有一个真正有效的基本通用示例,而没有一个解释每一行如何工作的示例。 题: 有人可以提供吗? 先决条件: 我已经知道将文件放在哪里,并且已经配置了log4j并可以用于控制台日志记录。 现在,我想登录到文件,并在程序运行后从文件系统中查找文件。 需要添加到现有文件的行是所需的输出

  • 问题内容: 我有一个普通的INFO级别应用日志。我需要的是另外记录所有错误级别的事件,以单独的错误日志。我正在使用这样的配置: 此配置仅记录错误。如果我首先放置信息级别记录器,则它将仅记录到一般附加程序,但错误记录器将无法工作。我想让他们两个都工作。 问题答案: 您需要做的是只有一个定义了INFO级别的定义,但是在您的两个追加器定义中,您需要相应地设置其阈值,例如 然后,将两个追加程序添加到记录器