java日志管理(slf4j+logback,tomcat)

对slf4j的理解:

slf4j只是一个日志抽象层,独立于其他所有的日志类库,需要配合其他的日志类库使用,例如logback,具体的日志级别输出、记录位置、日志格式通过具体的日志类库来实现;
slf4j能整合其他的日志类库,使得不同的日志类库能统一维护;
slf4j占位符{}功能利好,更好的输出日志;

对logback的理解:

logback是log4j创始人又一个日志开源组件;
logback包括三个jar:
logback-core,基础模块
logback-classic,为log4j的改良版本
logback-access,访问模块与Servlet容器集成提供通过Http来访问日志的功能。如何使用http访问日志?

slf4j和logback所需jar包:

logback-classic-0.9.29.jar
logback-core-0.9.29.jar // logback核心包
slf4j-api-1.6.2.jar // slf4j核心包

其他日志类库:
Log4j
commons logging
logback
java.util.logging

logback.xml相关说明:

打印日志格式pattern:

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - [%method,%line] - %msg%n
%d // 输出时间,{}中间是时间格式
%thread // 线程名称
%-5level // 日志级别名称,从左显示5个字符宽度
%logger{36} // 日志所在类名,36标识名称最多输出36个字符
%method // 日志所在方法名
%line // 日志所在类行数
%msg // 日志信息
%n // 换行

日志打印级别从低级到高级排序的顺序是:

TRACE < DEBUG < INFO < WARN < ERROR

tomcat的日志记录:

tomcat记录日志在conf/logging.properties文件中配置

tomcat有如下几种日子类别:catalina、localhost、manager、admin、host-manager
其中用到最多的是catalina日志,该日志会将tomcat的启动日志、java程序logback等打印的日志、以及jar中打印的日志全部打印
在conf/logging.properties关闭catalina日志:1catalina.org.apache.juli.FileHandler.level = OFF

项目结构:

package com.test;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogTest {
	
	
	private static final Logger log = LoggerFactory.getLogger(LogTest.class);
	
	private static void test(){
		
		log.info("info周星星喜欢,{}", "白晶晶");
		log.debug("debug周星星喜欢,{}", "紫霞");
		log.warn("warn周星星喜欢,{}", "牛魔王的妹妹");
		log.error("error周星星喜欢,{}", "达叔");
		log.info("info周星星电影:{}、{}", new String[]{"唐伯虎点秋香","大话西游"});
	}
	
	public static void main(String[] args) {
		test();
	}
	
}
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>

    <property name="LOG_HOME" value="/home/tomcatlog/logs/ibutler" />
    
    <!-- 控制台输出日志 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - [%method,%line] - %msg%n</pattern>
        </layout>
    </appender>
    
    <!-- 按照每天生成日志文件 -->
	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_HOME}/ibutler.log</file>
	<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 日志文件输出的文件名 -->
			<fileNamePattern>${LOG_HOME}/ibutler.%d{yyyy-MM-dd}.%i.log
			</fileNamePattern>
			<!-- 日志文件保留天数 -->
			<maxHistory>365</maxHistory>
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>500MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy> 
		<encoder>
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - [%method,%line] - %msg%n</pattern>
		</encoder>
	</appender>
    
    <!-- 文件输出日志 (文件大小策略进行文件输出,超过指定大小对文件备份) -->
    <!-- <appender name="FILE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>xxxx.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <FileNamePattern>xxxx.log.%i.bak</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>12</MaxIndex>
        </rollingPolicy>
        <triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>100MB</MaxFileSize>
        </triggeringPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
        </layout>
    </appender> -->
    
    <!-- 指定特定包名下的日志输出,例如特别指定com.test下的日志级别为warn -->
    <!-- level 输出指定日志级别以上的日志,日志级别大小关系:TRACE<DEBUG<INFO<WARN<ERROR -->
    <!-- appender-ref 指定输入日志形式 -->
    <!-- <logger name="com"> 
        <level value="INFO" /> 
        <appender-ref ref="STDOUT" /> 
        <appender-ref ref="FILE" /> 
    </logger> -->
    
    <!-- 指定所有的日志的级别,优先级比logger设置的优先级高  -->
    <root level="debug">
		<appender-ref ref="STDOUT" />
		<!-- <appender-ref ref="FILE" /> -->
	</root>
	
</configuration>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Firechou

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

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

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

打赏作者

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

抵扣说明:

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

余额充值