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

来源:互联网 发布:asp.net mvc5实例源码 编辑:程序博客网 时间:2024/06/05 05:34

对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>



阅读全文
0 0
原创粉丝点击