日志输出之slf4j注解

使用slf4j注解日志处理

slf4j注解的通常配置以及使用

一、SLF4J

SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

1.所需包

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.25</version>
    <scope>test</scope>
</dependency>
// 如果是dubbo项目自带它不用配置并要用exclusions防jar冲突
<dubbo.version>2.7.3</dubbo.version>
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-dependencies-zookeeper</artifactId>
    <version>${dubbo.version}</version>
    <type>pom</type>
    <exclusions>
          <exclusion>
               <groupId>org.slf4j</groupId>
               <artifactId>slf4j-log4j12</artifactId>
          </exclusion>
    </exclusions>
</dependency>

二、日志配置与输出

logback.xml配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration>
<configuration debug="false" scan="false">
	<contextName>gdcdgj-charging-service</contextName>
	<!-- 定义变量 -->
	<Property name="log.base" value="logs" />
	<Property name="log.name" value="service" />
	<Property name="log.level" value="INFO" />

	<!-- 控制台输出 -->
	<appender name="STDOUT"
		class="ch.qos.logback.core.ConsoleAppender">
		<!-- 格式化日志utf-8 -->
		<encoder
			class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<!-- 格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %C{1} [%M:%L] [%thread]
				- %msg%n</pattern>
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %C{1} [%M:%L]
				- %msg%n</pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>

	<!-- 把日至添加进文件 -->
	<appender name="FILE"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<File>${log.base}/${log.name}.out</File>
		<!--1GB 自动清空重新追加(true追加到文件结尾 false清空现存文件 默认true) -->
		<append>false</append>
		<rollingPolicy
			class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<FileNamePattern>${log.base}/${log.name}.out.%d{yyyy-MM-dd}.%i</FileNamePattern>
			<!-- 每天最多1GB log文件 -->
			<maxFileSize>500MB</maxFileSize>
			<!-- 日志存最近四天 -->
			<maxHistory>4</maxHistory>
			<!-- 日志最大占用1G -->
			<totalSizeCap>1GB</totalSizeCap>
		</rollingPolicy>
		<!-- 日志格式化存储到目的地 -->
		<encoder
			class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %C{1} [%M:%L]
				- %msg%n</pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>

	<!-- 日志记录会消耗性能,但当出现问题的时候,日志又能够帮助我们快速解决问题。那么如何提高打日志的性能呢?在使用logback的时候,推荐使用AsyncAppender异步记录日志。 -->
	<appender name="ASYNC"
		class="ch.qos.logback.classic.AsyncAppender">
		<discardingThreshold>0</discardingThreshold>
		<queueSize>512</queueSize>
		<appender-ref ref="FILE" />
	</appender>

	<!-- 日志输出级别 -->
	<root level="${log.level}">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="ASYNC" />
	</root>
</configuration>

控制台和文件输出

控制台日志输出
文件日志输出
文件日志信息

一些奇怪字符的说明

%m:输出代码中指定的消息

%p:输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

%r:输出自应用启动到输出该log信息耗费的毫秒数

%c:输出所属的类目,通常就是所在类的全名

%t:输出产生该日志事件的线程名

%n:输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”

%d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},

输出类似:2002年10月18日 22:10:28,921

%l:输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值