我们使用logback进行日志记录,并且在类路径中有以下jar
jcl-over-slf4j-1.7.7.jarlogback-classic-1.1.1.3.jarlogback-core-1.1.3.jarslf4j-api-1.7.7.jarjanino-2.7.8.jar
在每个应用程序中,我在logback.xml中都有最小的配置
<configuration scan="true" scanPeriod="10 seconds">
<statusListener
class="ch.qos.logback.core.status.OnConsoleStatusListener" />
<contextName>myapp- ${HOSTNAME}</contextName>
<include file="${logback.path}/logback.xml"/>
</configuration>
然后在我的文件系统中,我有这样的配置
<included>
<property name="LOG_HOME" value="C:\tmp" />
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{yyyy-MM-dd-HH:mm:ss.SSS} cn=%contextName [%thread] %-5level %logger{36} - %msg%n</Pattern>
</layout>
</appender>
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/application.%d{yyyy-MM-dd-HH-mm}_%i.zip</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>250KB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd-HH:mm:ss.SSS} cn=%contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="org.springframework" level="INFO"/>
<logger name="com" level="INFO"/>
<root level="INFO">
<appender-ref ref="stdout"/>
<appender-ref ref="file" />
</root>
现在,当我部署我的应用程序时,我确实在application.xxx.log文件中看到了来自spring框架的日志,但我记录一些语句的实际应用程序代码没有显示在这个日志文件中
在我的代码中,我使用slf4j记录器工厂来获取记录器,然后只记录一些伪语句,比如这个
private static final Logger logger = LoggerFactory.getLogger(GameService.class);
logger.info("Playing cricket game.......");
我想我已经解决了这个问题。在我们的lib中,我们使用了通用的logger util类,该类正在修改logger上下文对象。一旦我消除了这种依赖,一切都很好。由于这是旧的日志记录方式,我们不再需要通用的logger util。