日志管理(二)-logback常用配置

上一篇文章讲到日志的级别,下面我们来谈谈日志文件的常用配置。
Logback最常用就是在classpath路径(即resource根目录)下定义一个logback.xml配置文件,从而对日志输出配置。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<!--定义变量-->
	<property name="log.path" value="/data/logs/server" />
	<!--控制台输出策略-->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
			</pattern>
		</encoder>
	</appender>
<!--文件输出策略-->
	<appender name="rollingFile"
			  class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log.path}.log</file>
		<!--每天一归档-->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${log.path}.%d{yyyy-MM-dd}.log
			</fileNamePattern>
		</rollingPolicy>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
			</pattern>
		</encoder>
	</appender>
	<!--logger节点,可选节点,用来具体指明包的日志输出级别,它将会覆盖root的输出级别-->
	<logger name="com.example.logback" level="debug" />
	<!--root节点,必选节点,用来指定最基础的日志输出级别和应用appender,格式化日志输出,目前配置控制台和文件都输出-->
	<root>
		<level value="info" />
		<appender-ref ref="console" />
		<appender-ref ref="rollingFile" />
	</root>
</configuration>

上面就是最常用最基础的日志配置,下面从根节点来解析每个节点
1. 根节点configuration,有以下属性:

  • a. scan,当此属性设置为true时,配置文件如果发生改变时,将会被重新加载,默认值为true。
  • b. scanPeriod,设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位来,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
  • c.debug,当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。 默认值为false。

2. property定义变量name,使用时通过${name}访问value,它有一个属性file,用于指定配置文件的路径;当你变量较多时,可写入配置文件中,通过file来引入,如下

<property file="/conf/variables.properties" />

  variables.properties:

log.path=/data/logs/server
log.name=logFile.log

 然后就直接通过${log.path}就可以访问其值

 它还有一个resource的属性,作用和file一样,但它是从classpath路径下引入配置文件

<property resource="resource.properties" />

3. appender格式化日志输出节点,有俩个属性name和class,class用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略。appender有以下子节点:
a. encoder和pattern节点组合用于具体输出的日志格式;

<encoder>
	<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
	</pattern>
</encoder>

 格式使用“%”加“转换符”方式:
  %d{HH:mm:ss.SSS}:输出时间时分秒和毫秒数
  %thread:输出线程名
  %-5level:这里使用到修饰符,第一个可选修饰符是左对齐 标志,符号是减号“-”;接着是可选的最小宽度 修饰符,用十进制数表示。所以输出结果为日志级别进行左对齐 且最小宽度为5
  %logger{36}:输出日志的logger名,长度为36
  %msg:输出应用程序提供的信息
  %n:换行符
 输出格式栗子:

23:11:37.337 [main] INFO  o.s.b.c.e.t.TomcatEmbeddedServletContainer - Tomcat started on port(s): 8080 (http)

b. file节点用来指明日志文件的输出位置,可以是绝对路径也可以是相对路径;
c. rollingPolicy日志回滚策略,在这里我们用了TimeBasedRollingPolicy,基于时间的回滚策略,有以下常见子节点

  • fileNamePattern,必要节点,可以用来设置指定时间的日志归档,例如我们上面的例子是每天将日志归档成一个log文件
  • maxHistory ,可选节点,可以控制已产生日志的数量,超出数量就删除旧文件,例如如果maxHistory设置为30,那么超过30天的log文件会被自动删除,只保存最近30天的日志
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
	<!-- 每天一归档 -->
	<fileNamePattern>${log.path}.%d{yyyy-MM-dd}.log</fileNamePattern>
	<!-- 只保存最近30天的日志 -->
	<maxHistory>30</maxHistory>
</rollingPolicy>

上面的配置,内容都输出到一个文件中。但为了方便定位问题,我们想异常信息输出到错误日志中去;为了统计,需要将内容输出到不同文件中。又该如何做呢?请看下回分解>>>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路上的码农匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值