服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

Spring Boot配置保存日志文件

日期: 来源:SpringForAll收集编辑:
关注我,回复关键字“spring”
免费领取Spring学习资料

springboot日志配置:

springboot默认日志是打印再console中的,不会保存在文件中。我们项目上线肯定要保存日志用于分析的。

一、使用xml配置日志保存(并不需要pom配置slf4j依赖,starter里面已经配置了依赖了)

1、在项目的resources目录下创建一个【logback-spring.xml】日志配置文件

名称只要是一 logback开头就行,测试使用log.xml并不会生成日志。合法名称:logback.xml 、logback-spring.xml

备注:要配置logback-spring.xml,springboot会默认加载此文件,为什么不配置logback.xml,因为logback.xml会先application.properties加载,而logback-spring.xml会后于application.properties加载,这样我们在application.properties文中设置日志文件名称和文件路径才能生效

2、编写xml文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="true" scanPeriod="60 seconds" debug="false">
 <contextName>logback</contextName>
 <!--输出到控制台-->
 <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
  <encoder>
   <!--<pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>-->
   <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
<!--            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} -%5p ${PID:-} [%15.15t] %-30.30C{1.} : %m%n</pattern>-->
  </encoder>
 </appender>

 <!--按天生成日志-->
 <appender name="logFile"  class="ch.qos.logback.core.rolling.RollingFileAppender">
    <Prudent>true</Prudent> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <FileNamePattern>
     poslog/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.log
      </FileNamePattern>
      <maxHistory>7</maxHistory> 
    </rollingPolicy>
    <layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>
       %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
      </Pattern>
    </layout>
 </appender>

 <root level="INFO">
  <appender-ref ref="console" />
  <appender-ref ref="logFile" />
 </root>

</configuration>

上述配置的编码中,对应符号的含义如下

  • %d{HH:mm:ss.SSS}——日志输出时间
  • %thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用
  • %-5level——日志级别,并且使用5个字符靠左对齐
  • %logger ——日志输出者的名字
  • %msg——日志消息
  • %n——平台的换行符

3、编写打印日志

 private Logger logger = LoggerFactory.getLogger(TestController.class);
 
 logger.info("name = " + name + " || views = " + views);// 使用

4、启动测试

在当前文件夹下会创建一个【poslog/2020-10/22】的文件夹,里面会按天生成日志:【2020-10-22.log】,例如:

2020-10-22 16:38 [main] INFO  org.springframework.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8088 (http)
2020-10-22 16:38 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8088"]
2020-10-22 16:38 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
2020-10-22 16:38 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.38]
2020-10-22 16:38 [main] INFO  org.apache.catalina.core.AprLifecycleListener - Loaded Apache Tomcat Native library [1.2.23] using APR version [1.7.0].
2020-10-22 16:38 [main] INFO  org.apache.catalina.core.AprLifecycleListener - APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
2020-10-22 16:38 [main] INFO  org.apache.catalina.core.AprLifecycleListener - APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
2020-10-22 16:38 [main] INFO  org.apache.catalina.core.AprLifecycleListener - OpenSSL successfully initialized [OpenSSL 1.1.1c  28 May 2019]
2020-10-22 16:38 [main] INFO  org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
2020-10-22 16:38 [main] INFO  org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1422 ms
2020-10-22 16:38 [main] INFO  org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
2020-10-22 16:38 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8088"]
2020-10-22 16:38 [main] INFO  org.springframework.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8088 (http) with context path ''
2020-10-22 16:38 [main] INFO  com.example.demo.DockerComposeTestApplication - Started DockerComposeTestApplication in 2.841 seconds (JVM running for 3.257)

备注:发现使用这个默认不用配置pom依赖,最新的spring-boot-starter-web中已经集成了。

总结:启动一个项目,直接将logback-spring.xml文件复制到resources目录下就可以实现日志文件记录。非常方便。

如果您正在学习Spring Boot,那么推荐一个连载多年还在继续更新的免费教程:http://blog.didispace.com/spring-boot-learning-2x/

二、进阶配置:

分类logback.xml配置:

日志配置到d盘了

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <!-- 日志存放路径 -->
 <property name="log.path" value="d:/logback" />
 <!-- 日志输出格式 -->
 <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />

 <!-- 控制台输出 -->
 <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
  <encoder>
   <pattern>${log.pattern}</pattern>
  </encoder>
 </appender>
 
 <!-- 系统日志输出 -->
 <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>${log.path}/sys-info.log</file>
  <!-- 循环政策:基于时间创建日志文件 -->
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
   <!-- 日志文件名格式 -->
   <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
   <!-- 日志最大的历史 60天 -->
   <maxHistory>60</maxHistory>
  </rollingPolicy>
  <encoder>
   <pattern>${log.pattern}</pattern>
  </encoder>
  <filter class="ch.qos.logback.classic.filter.LevelFilter">
   <!-- 过滤的级别 只会打印debug不会有info日志-->
<!--            <level>DEBUG</level>-->
   <!-- 匹配时的操作:接收(记录) -->
   <onMatch>ACCEPT</onMatch>
   <!-- 不匹配时的操作:拒绝(不记录) -->
   <onMismatch>DENY</onMismatch>
  </filter>
 </appender>
 
 <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>${log.path}/sys-error.log</file>
  <!-- 循环政策:基于时间创建日志文件 -->
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
   <!-- 日志文件名格式 -->
   <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
   <!-- 日志最大的历史 60天 -->
   <maxHistory>60</maxHistory>
  </rollingPolicy>
  <encoder>
   <pattern>${log.pattern}</pattern>
  </encoder>
  <filter class="ch.qos.logback.classic.filter.LevelFilter">
   <!-- 过滤的级别 -->
   <level>ERROR</level>
   <!-- 匹配时的操作:接收(记录) -->
   <onMatch>ACCEPT</onMatch>
   <!-- 不匹配时的操作:拒绝(不记录) -->
   <onMismatch>DENY</onMismatch>
  </filter>
 </appender>
 
 <!-- 用户访问日志输出  -->
 <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>${log.path}/sys-user.log</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
   <!-- 按天回滚 daily -->
   <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
   <!-- 日志最大的历史 60天 -->
   <maxHistory>60</maxHistory>
  </rollingPolicy>
  <encoder>
   <pattern>${log.pattern}</pattern>
  </encoder>
 </appender>
 
 <!-- 系统模块日志级别控制  -->
 <logger name="com.example" level="debug" />
 <!-- Spring日志级别控制  -->
 <logger name="org.springframework" level="warn" />

 <root level="info">
  <appender-ref ref="console" />
 </root>
 
 <!--系统操作日志-->
 <root level="info">
  <appender-ref ref="file_info" />
  <appender-ref ref="file_error" />
 </root>
 
 <!--系统用户操作日志-->
 <logger name="sys-user" level="info">
  <appender-ref ref="sys-user"/>
 </logger>
</configuration> 

还可以在application.yml中配置

# 日志配置
logging:
  level:
    com.example: info
    org.springframework: warn

配置info就只有info以上日志才会输出

如果配置 com.example: debug ,那么我们项目com.example包里面debug以上的日志也会输出。

来源:blog.csdn.net/gaopinqiang/

article/details/109228641



END



Spring Boot 手动配置 @Enable 的秘密
答应我, 不要再用 if (obj != null) 判空了
你所不知道的 Spring 中 @Autowired 那些实现细节!
玩转 Java8 Stream,常用方法大合集

关注后端面试那些事,回复【2022面经】

获取最新大厂Java面经

最后重要提示:高质量的技术交流群,限时免费开放,今年抱团最重要。想进群的,关注SpringForAll社区,回复关键词:加群,拉你进群。

点击“阅读原文”领取2022大厂面经
↓↓↓ 

相关阅读

  • 又有城市设立“人才日”,还要思考什么?

  • 文|朱晓帆继宁波、南通、温州之后,又一座城市以法定形式为人才设立了专属的节日。 湖州市景观 新华网发 4月24日,浙江湖州市人大常委会会议表决通过《关于设立“湖州人才日”
  • 有调整!江苏儿童可免费接种11种疫苗

  • 疫苗被公认为是预防传染性疾病的极其重要、有效的工具家长们注意今年江苏儿童疫苗接种有调整可免费接种11种疫苗(点击查看大图)水痘疫苗免费2018年11月起,南京市将水痘减毒活疫

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四
  • 美国对华2000亿关税清单,到底影响有多大?

  • 1 今天A股大跌,上证最大跌幅超过2%。直接导火索是美国证实计划对华2000亿美元产品加征25%关税。 听起来,2000亿美元数目巨大,我们来算笔账。 2000亿美元,按现在人民币汇率

最新文章

  • 从新React文档看未来Web的开发趋势

  • 作者 | Luke Twomey 译者 | 核子可乐 策划 | 丁晓昀 新的 React 文档终于到来,目前已经通过全新 React.dev 域与广大开发者见面。长久以来,官方文档是一直是新手们学习
  • 2023 年,我建议创业公司选择 Flutter

  • 作者 | CHRISTIAN FINDLAY 译者 | 核子可乐 策划 | 丁晓昀 作为一家初创企业,为自己的首款应用程序选择正确技术堆栈无疑至关重要。您的具体技术选择将直接影响到产品
  • 群殴特斯拉

  • 前几天,马老板的星舰首飞在半空中炸了,作为一个不是那么热血的科幻爱好者,我对这事儿不是太关心,但大家发现星舰炸了之后,马老板的另外一家小公司特斯拉,股价也炸了:当天收盘,大跌9.
  • 河北高校新增本科专业61个,撤销29个

  • 高校专业调整,透出哪些新信号日前,教育部公布了2022年度普通高等学校本科专业备案和审批结果。河北高校新增本科专业61个,其中27所高校新增56个备案本科专业,5所高校新增5个审批
  • Spring Boot配置保存日志文件

  • 关注我,回复关键字“spring”,免费领取Spring学习资料。springboot日志配置:springboot默认日志是打印再console中的,不会保存在文件中。我们项目上线肯定要保存日志用于分析的
  • 3月Flutter小报|读小报,涨知识

  • 本期内容1. Flutter如何Mock MethodChannel进行单元测试2. Flutter如何获取键盘的完整高度3. Flutter快速实现新手引导气泡Flutter如何Mock MethodChannel进行单元测试在做F