【需求】打印日志内容到控制台
女朋友今天接到的需求是测试一个方法的执行时间,然后就在这个方法中第一行和最后一行中输出了一下当前时间的long值,以此来判断出方法的执行时间。
但,终究还是有问题,测试上打印的日志好好的,结果一上生产环境,就完蛋了,根本就在主日志文件中没有找到相关的日志,悲哀。
【问题】日志组件在测试环境和生产环境打印不一致
这里的问题就是生产环境和测试环境的日志打印不一致问题,其实也是很好定位的,只需要查看log日志用的是哪个组件,随后判断出log组件的配置文件,查看生产和测试环境下打印规则是否一致。
这个问题可能也不是我说的这种情况,但是恰巧这个解决方案正好解决她现在的问题,虽然有点无脑。
【结果】
logback组件的使用,在于logger.xml中的配置规则,一般都会根据不同的环境,分配不同的打印规则。
我大概列一下logback的相关配置吧,这是我项目中常用的一些规则。
<?xml version="1.0" encoding="UTF-8"?> <configuration> <contextName>logback</contextName> <springProperty scope="context" name="logPath" source="logging.path"/> <property name="log.path" value="${logPath}" /> <!--输出到控制台--> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>info</level> </filter> <encoder> <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> <charset>UTF-8</charset> </encoder> </appender> <!-- 时间滚动输出 level为 INFO 日志 --> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/log_info.log</file> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <maxHistory>30</maxHistory> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>info</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <springProfile name="test"> <logger name="com.wingtra.ymt" level="debug"/> <root level="debug"> <appender-ref ref="CONSOLE"/> </root> </springProfile> <springProfile name="dev"> <logger name="com.wingtra.ymt" level="debug"/> <root level="debug"> <appender-ref ref="CONSOLE"/> <appender-ref ref="INFO_FILE"/> </root> </springProfile> <springProfile name="pro"> <root level="info"> <appender-ref ref="INFO_FILE"/> </root> </springProfile> </configuration>
这个是logback.xml的配置,在这里面使用springProfile来指定环境参数即可。