springboot + logback + docker 实现多级别日志打印

本贴最后更新于 2076 天前,其中的信息可能已经事过境迁

1.创建 springbot 项目

2.png

  • 输入自己项目名称,点击下一步下一步,走着去就行了

2.在项目中的 resources 文件夹中创建一个 logback-spring.xml 文件,输入如下内容

<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!--配置本地日志输出路径--> <property name="log_path" value="./target"/> <if condition='isDefined("catalina.home")'> <then> <!-- 配置远程日志输出路径 --> <property name="log_path" value="${catalina.home}"/> </then> </if> <!--配置项目名称--> <property name="entryName" value="你项目的名称"/> <!-- 控制台输出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder charset="UTF-8"> <pattern>%date{yyyy-MM-dd HH:mm:ss} | %highlight(%-5level) | %boldYellow(%thread) | %boldGreen(%logger) | %msg%n </pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 按照每天生成error日志文件 --> <appender name="ERRORFILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <Prudent>true</Prudent> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件输出的文件名 --> <FileNamePattern>${log_path}/logs/${entryName}/error/${entryName}_error-%d{yyyy-MM-dd}.log</FileNamePattern> <!--日志文件保留天数 --> <MaxHistory>5</MaxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n </pattern> </encoder> <!-- 只打印错误日志 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 按照每天生成warn日志文件 --> <appender name="WARNFILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <Prudent>true</Prudent> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件输出的文件名 --> <FileNamePattern>${log_path}/logs/${entryName}/warn/${entryName}_warn-%d{yyyy-MM-dd}.log</FileNamePattern> <!--日志文件保留天数 --> <MaxHistory>5</MaxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n </pattern> </encoder> <!-- 只打印警告日志 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 按照每天生成INFO日志文件 --> <appender name="INFOFILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <Prudent>true</Prudent> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件输出的文件名 --> <FileNamePattern>${log_path}/logs/${entryName}/info/${entryName}_info-%d{yyyy-MM-dd}.log</FileNamePattern> <!--日志文件保留天数 --> <MaxHistory>5</MaxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n </pattern> </encoder> <!-- 只打印INFO日志 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 按照每天生成DEBUG日志文件 --> <appender name="DEBUGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <Prudent>true</Prudent> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件输出的文件名 --> <FileNamePattern>${log_path}/logs/${entryName}/debug/${entryName}_debug-%d{yyyy-MM-dd}.log</FileNamePattern> <!--日志文件保留天数 --> <MaxHistory>5</MaxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n </pattern> </encoder> <!-- 只打印DEBUG日志 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>DEBUG</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 日志输出级别 --> <root level="DEBUG"> <appender-ref ref="STDOUT"/> <appender-ref ref="ERRORFILE"/> <appender-ref ref="WARNFILE"/> <appender-ref ref="INFOFILE"/> <appender-ref ref="DEBUGFILE"/> </root> </configuration>

logback-spring.xml 这里我就不解释了,必进注释都怎么明显了;

这里会打印 4 中级别的日志,分别为:ERROR、WARN、INFO、DEBUG

这些日志是打印在 tomcat 中的 log 文件下面的,路径:/usr/local/tomcat/logs/你项目名称/,文件夹下面会有 4 个文件夹,分别为:error/warn/info/debug

日志格式:项目名称_error-2019-09-09.log、项目名称_info-2019-09-09.log、项目名称_warn-2019-09-09.log、项目名称_debug-2019-09-09.log

还有一点,就是控制台打印哪里在做项目调试的时候最好去掉,因为他会把错误日志打印到 error 文件里面,控制台会没有显示;

tomcat 进行在宿主机中完成日志文件的挂载

启动tomcat镜像时,把下面这句话加入启动命令中,即可完成日志的挂载 -v /usr/local/docker/tomcat/logs:/usr/local/tomcat/logs/项目名称/

以后利用 ELK 做日志监控也比较方便了(这是后续,目前还在学习中.....)

  • 日志
    45 引用 • 105 回帖
  • logback
    4 引用 • 1 回帖
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    949 引用 • 1460 回帖
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    495 引用 • 931 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...