女朋友问的那些问题—log.info在测试环境正常打印,上了生产就废?
theme: smartblue
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
【需求】打印日志内容到控制台
女朋友今天接到的需求是测试一个方法的执行时间,然后就在这个方法中第一行和最后一行中输出了一下当前时间的long值,以此来判断出方法的执行时间。
但,终究还是有问题,测试上打印的日志好好的,结果一上生产环境,就完蛋了,根本就在主日志文件中没有找到相关的日志,悲哀。
【问题】日志组件在测试环境和生产环境打印不一致
这里的问题就是生产环境和测试环境的日志打印不一致问题,其实也是很好定位的,只需要查看log日志用的是哪个组件,随后判断出log组件的配置文件,查看生产和测试环境下打印规则是否一致。
这个问题可能也不是我说的这种情况,但是恰巧这个解决方案正好解决她现在的问题,虽然有点无脑。
【结果】
logback组件的使用,在于logger.xml中的配置规则,一般都会根据不同的环境,分配不同的打印规则。
我大概列一下logback的相关配置吧,这是我项目中常用的一些规则。
```
<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>
```
这个是logback.xml的配置,在这里面使用springProfile来指定环境参数即可。
公众号:Ijiran的编程思维,随缘关注。转载请注明地址,谢谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)