Row*_*nto 5 log4j slf4j java-ee interceptor
我正在使用SLF4J进行日志记录(使用Log4J).使用的appender使用xml配置.
<appender name="business" class="org.apache.log4j.RollingFileAppender">
<param name="maxFileSize" value="10MB" />
<param name="maxBackupIndex" value="10" />
<param name="File" value="${jboss.server.log.dir}/business.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %p [%t] %c - %m%n" />
</layout>
</appender>
<category name="BusinessLogger" additivity="false">
<level value="INFO" />
<appender-ref ref="business" />
</category>
Run Code Online (Sandbox Code Playgroud)
在拦截器中调用日志进程.现在,我正在尝试测试日志的输出.我在运行时使用以下命令调用记录器:
private static final Logger BUSINESS_LOGGER = LoggerFactory.getLogger("BusinessLogger");
Run Code Online (Sandbox Code Playgroud)
为了测试日志(使用junit),日志的输出需要作为变量保存在某处.我有一个创建自定义appender的想法,它将最后一个日志保存到变量中,但我似乎无法添加appender或更改appender,因为slf4j中的Logger类是一个接口.有没有人知道任何解决方法?
所以我在alterfox的帮助下解决了这个问题。
当我使用 slf4j 调用记录器时:
private static final Logger BUSINESS_LOGGER = LoggerFactory.getLogger("BusinessLogger");
Run Code Online (Sandbox Code Playgroud)
它返回我 slf4j 的记录器适配器的实现,它没有添加附加程序方法。所以我使用 log4j Logger 类调用记录器
private static final Logger BUSINESS_LOGGER = Logger.getLogger("BusinessLogger")
Run Code Online (Sandbox Code Playgroud)
尽管类名称是“Logger”,但它们来自不同的包。后一种方法是 Log4J 方法,它从 Log4J 返回实际的 Logger 对象。然后 addAppender 方法就可用了。好吧,我尝试了这个,但它不起作用(除非它起作用)。问题是,我忘记设置日志级别。因此,在添加附加程序后,我设置了日志级别,然后我看到来自第二个附加程序的日志。
| 归档时间: |
|
| 查看次数: |
9991 次 |
| 最近记录: |