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

多个日志记录器,每个日志记录器都有特定的appender

柳浩大
2023-03-14

我使用的是播放框架,其中日志是默认的记录器引擎。为了便于跟踪,我希望将两个不同的活动(log intransaction)记录在两个单独的文件中。为此,我有两个追加器和两个记录器。每个记录器都用特定的appender标记。

<appender name="TRANSACTION" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     <fileNamePattern>${application.home}/logs/transaction/transaction-%d{yyyy-MM-dd HH}.log</fileNamePattern>
  </rollingPolicy>
  <encoder>
     <pattern>%message%n</pattern>
  </encoder>
</appender>
<appender name="LOGIN" class="ch.qos.logback.core.FileAppender">
  <file>${application.home}/logs/log-in-record.log</file>
  <encoder>
    <pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
  </encoder>
</appender>

<logger name="transaction" level="INFO">
  <appender-ref ref="TRANSACTION" />
</logger>
<logger name="log-in" level="INFO">
  <appender-ref ref="LOGIN" />
</logger>

我希望通过事务记录器(如play.logger.of(“transaction”).info(“test transaction log\r\n这里是另一行”);登录或注册相关活动(如play.logger.of(“log-in”).info(“user X已登录...”);

但不管用。有什么想法吗?

我所说的“不工作”是指相同的日志被附加到两个记录器中,而不是特定于特定的日志。例如。如果我从播放代码调用Play.logger.of(“log-in”).info(“用户X已登录...”);,事务和登录记录器都将用户X已登录...记录到两个不同的文件。

共有1个答案

常波
2023-03-14

您需要向记录器添加additivity=“false”

<logger name="transaction" level="INFO" additivity="false">
  <appender-ref ref="TRANSACTION" />
</logger>
<logger name="log-in" level="INFO" additivity="false">
  <appender-ref ref="LOGIN" />
</logger>
 类似资料:
  • 我想在我的应用程序中使用SLF4J+logback用于两个目的--日志和审计。 14:41:57.978[main]信息AUDIT_LOGGER-110欢迎使用main 如何确保审核消息在审核记录器下只出现一次?

  • ,日志记录将进入一个文件; (路径)/service_name/service_name.log 我想用logback复制这种行为,但在logback.xml配置中获取“logger”名称时遇到了真正的困难。它可以在log encoder.pattern中看到,即“%d%-5level%logger{35}-%msg%n”。

  • 现在,问题是,当我以以下方式进行日志记录时: 尽管根记录器级别被设置为“错误”,但日志条目仍然存在于两个日志文件中。然而,当我去掉“it.pkg.testpkg.service”记录器(通过注释或删除它)时,条目停止进入根记录器。我不太清楚这是怎么回事。 目前,我已经找到了一个临时解决方案,方法是在“root_file_appender”中添加以下条目: 谢了。

  • 问题内容: 当我使用标准模块 logging 将日志写入文件时,是否将每个日志分别刷新到磁盘?例如,以下代码是否会将日志刷新10次? 如果是这样,它会变慢吗? 问题答案: 是的,它会在每次调用时刷新输出。您可以在的源代码中看到: 我真的不会介意日志记录的性能,至少在分析和发现它是瓶颈之前不会。无论如何,您始终可以创建一个在每次调用时都不会执行的子类(即使如果发生严重异常/解释器崩溃,也可能会丢失大

  • 问题内容: 我正在考虑将Redis用于Web应用程序日志记录目的。我用谷歌搜索,有人将日志转储到Redis队列/列表中,然后将计划的工作人员转储到磁盘中。 http://nosql.mypopescu.com/post/8652869828/another-redis-use-case- centralized-logging 我希望寻求理解,为什么不直接使用Redis持久化到磁盘?如果我分配了一

  • logging 模块自 2.3 版以来一直是 Python 标准库的一部分。在 PEP 282 中有对它的简洁描述。除了 基础日志教程 之外,这些文档是非常难以阅读的。 日志记录一般有两个目的: 诊断日志 记录与应用程序操作相关的日志。例如,当用户遇到程序报错时, 可通过搜索诊断日志以获得上下文信息。 审计日志 为商业分析而记录的日志。从审计日志中,可提取用户的交易信息, 并结合其他用户资料构成用