我有一个应用程序需要写入两种不同类型的日志:应用程序日志和审计日志。应用程序日志用于调试目的,而审核日志用于记录执行的操作。这两个日志将位于不同的文件中,并且每个文件应该只包含上述日志(这意味着审核日志文件不能包含应用程序日志,反之亦然)。
如何使用log4j实现这一点?
我知道实现这一点的一种方法是在log4j中定义自定义日志级别。有没有其他/更好的方法呢?
发布于 2012-09-25 16:55:06
我也有过同样的用例。在您的log4j.xml中,您可以为每个记录器定义两个不同的记录器和一个附加器。因此,下面是一个示例:
<logger name="LOGGER_1" additivity="false">
<appender-ref ref="LOGGER_FILE_1"/>
</logger>
<appender name="LOGGER_FILE_1" class="org.jboss.logging.appender.RollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.log.dir}/loggerFile1.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="20MB"/>
<param name="MaxBackupIndex" value="5"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
</appender>在您的Java代码中,您可以创建一个带有"Logger.getLogger("LOGGER_1")“的记录器,它将把日志输出写入定义的文件。
发布于 2012-09-25 16:43:44
我不认为你需要一个新的水平。相反,您需要一个特定的Logger (或一组Loggers)。
通常,您使用类/包名实例化它们。但是,出于审计的目的,您可以简单地使用名称" audit“(或类似名称)实例化一个新的Logger,然后使用标准机制进行适当的配置。
发布于 2012-09-30 11:12:53
创建Log4j 2.0时,支持审计日志记录是其主要目的之一。推荐的使用模式是先使用Log4j(或SLF4j)的EventLogger,然后再使用FlumeAppender,这可以保证交付到目标日志库。有关详细信息,请参阅http://logging.apache.org/log4j/2.x/manual/eventlogging.html和http://logging.apache.org/log4j/2.x/manual/appenders.html#FlumeAppender。如果您有其他问题,请随时在Apache Log4j邮件列表上提问。
https://stackoverflow.com/questions/12579187
复制相似问题