logback使用

1、需要引入maven配置

ch.qos.logback
logback-classic
1.0.0
这个会依赖slf4j-api和logback-core。

ch.qos.logback
logback-access
1.1.5

所有的jar包
logback-access-1.0.0.jar
logback-classic-1.0.0.jar
logback-core-1.0.0.jar
slf4j-api-1.6.0.jar

2、LoggerFactory.getLogger()方法可以传递两种参数。自己起的名字和类.class。主要在打印的日志里有所区分

3、logback有默认的配置,会读取项目里的logback.xml和logback-test.xml配置文件

4、配置文件里可以设置到类级别的打印日志

5、appender里加上filter可以使文件里只打印改类型的日志

6、通过定义包来打印框架的日志

7、xml配置里如果使用变量来定义参数,那么就得 ,

8、打印info级别日志时如果getLogger()参数是自定义的string的话,可能会引起无法输出日志的问题

配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>

    <!-- 日志存放路径 存放于tomact的log-->
    <property name="LOG_PATH" value="../logs" />

    <!-- error的日志 -->
    <appender name="errorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/all_error.log</File>
        <!-- 所有ERROR级别的日志文件打印在一个文件里 过滤器只会过滤对应的日志 -->
        <!--过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一。返回DENY,日志   将立即被抛弃不再经过其他过滤器;返回NEUTRAL,有序列表里的下个过滤器过接着处理日志;返回ACCEPT,日志会被立即处理,不再经过剩余过滤器。过滤器被添加到<Appender> 中,为<Appender> 添加一个或多个过滤器后,可以用任意条件对日志进行过滤。<Appender> 有多个过滤器时,按照配置顺序执行-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <!-- 用于配置符合过滤条件的操作 -->
            <onMatch>ACCEPT</onMatch>
            <!-- 用于配置不符合过滤条件的操作 -->
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/all_error.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>5</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</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>

    <!-- common下的类打印日志 -->
    <appender name="commonLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/common.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/common.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>5</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</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>

    <!-- front下的类打印日志 -->
    <appender name="frontLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/front.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/front.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</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>

    <!-- job下的类打印日志 -->
    <appender name="jobLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/job.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/job.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</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>

    <!-- remote下的类打印日志 -->
    <appender name="remoteLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/remote.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/remote.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</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>

    <!-- service下的类打印日志 -->
    <appender name="serviceLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/service.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/service.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</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>

    <!-- 支付日志 -->
    <appender name="payLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/pay.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/pay.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</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>

    <logger name="com.galaxy.fym.common" level="ERROR">
        <appender-ref ref="commonLog"/>
    </logger>
    <logger name="com.galaxy.fym.front" level="ERROR">
        <appender-ref ref="frontLog"/>
    </logger>
    <logger name="com.galaxy.fym.job" level="INFO">
        <appender-ref ref="jobLog"/>
    </logger>
    <logger name="com.galaxy.fym.remote" level="INFO">
        <appender-ref ref="remoteLog"/>
    </logger>
    <logger name="com.galaxy.fym.service" level="INFO">
        <appender-ref ref="serviceLog"/>
    </logger>
    <logger name="com.galaxy.fym.pay.Pay" level="INFO">
        <appender-ref ref="payLog"/>
    </logger>

    <!-- 框架的输出 -->
    <!--<logger name="org.springframework.core" value="ERROR" />
    <logger name="org.springframework.beans" value="ERROR" />
    <logger name="org.springframework.context" value="ERROR" />
    <logger name="org.springframework.web" value="ERROR" />
    <logger name="org.apache.zookeeper" value="ERROR" />-->

    <!-- 对所有的class文件都会起效果 -->
    <root>
        <appender-ref ref="errorLog"/>
    </root>
</configuration>

这个是项目里实际用到的配置,踩了很多坑总结出来的

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>

    <!-- 日志总开关,统一在此处配置 -->
    <property name="LOG_LEVEL" value="ERROR" />

    <!-- 日志存放路径 -->
    <property name="LOG_PATH" value="../logs" />

    <jmxConfigurator />

    <!-- error的日志 -->
    <appender name="errorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 一定要加$符号,不然产生不了文件-->
        <File>${LOG_PATH}/error.log</File>
        <!-- 所有ERROR级别的日志文件打印在一个文件里 过滤器只会过滤对应的日志 -->
        <!--过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一。返回DENY,日志将立即被抛弃不再经过其他过滤器;返回NEUTRAL,有序列表里的下个过滤器过接着处理日志;返回ACCEPT,日志会被立即处理,不再经过剩余过滤器。
        过滤器被添加到<Appender> 中,为<Appender> 添加一个或多个过滤器后,可以用任意条件对日志进行过滤。<Appender> 有多个过滤器时,按照配置顺序执行-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>${LOG_LEVEL}</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/error.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>5</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</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>

    <!-- info的日志 记录业务日志-->
    <appender name="infoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/info.log</File>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/info.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>5</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</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>

    <!-- 控制台输出日志 -->
    <appender name="stdoutAppender" 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} - %msg%n</pattern>
        </layout>
    </appender>

    <!-- 业务代码日志直接输出在控制台里或者业务日志 -->
    <logger name="com.galaxy.wz" level="INFO">
        <appender-ref ref="stdoutAppender" />
        <appender-ref ref="infoLog" />
    </logger>

    <!-- 对所有的class文件都会起效果 root也可以设置级别的,默认是DEBUG,这里可以记录整个项目所产生的报错日志,当然可以分业务定义 -->
    <root level="${LOG_LEVEL}">
        <appender-ref ref="errorLog"/>
    </root>
</configuration>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是一个简单的 Logback 使用示例: 1. 引入 Logback 依赖 ```xml <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> ``` 2. 创建 Logback 配置文件 在 src/main/resources 目录下创建 logback.xml 配置文件,内容如下: ```xml <configuration> <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> <root level="DEBUG"> <appender-ref ref="CONSOLE" /> </root> </configuration> ``` 上述配置定义了一个控制台输出的 appender,它输出的日志信息包括时间、线程名、日志级别、日志类名以及日志内容。 3. 在代码中使用 Logback ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyApp { private static final Logger logger = LoggerFactory.getLogger(MyApp.class); public static void main(String[] args) { logger.debug("Debug message"); logger.info("Info message"); logger.warn("Warn message"); logger.error("Error message"); } } ``` 上述代码中,我们使用了 slf4j 接口来获取 Logback 的 Logger 对象,并在程序中输出了不同级别的日志信息。 4. 运行程序并查看日志输出 运行程序后,可以在控制台中看到类似下面的日志输出: ``` 10:23:45.678 [main] DEBUG com.example.MyApp - Debug message 10:23:45.678 [main] INFO com.example.MyApp - Info message 10:23:45.678 [main] WARN com.example.MyApp - Warn message 10:23:45.678 [main] ERROR com.example.MyApp - Error message ``` 这就是一个简单的 Logback 使用示例。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值