java通过SLF4J和Logback实现日志输出(通过命令行编译)

1.本次测试环境的目录结构如下:

 

 

2.下载SLF4J和Logback,将其放在src目录,下载地址分别为https://www.slf4j.org/download.htmlhttps://logback.qos.ch/download.html

3.设置logback的配置,具体如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<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>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <file>log/output.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>log/output.log.%i</fileNamePattern>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>1MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
</configuration>
logback.xml

4.调用slf4j具体如下所示:

package com.itranswarp.learnjava;

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

public class Main {

    static final Logger logger = LoggerFactory.getLogger(Main.class);

    public static void main(String[] args) {
        logger.info("Start process {}...", Main.class.getName());
        try {
            "".getBytes("invalidCharsetName");
        } catch (UnsupportedEncodingException e) {
            logger.error("{} 不支持的编码格式", "slf4j");
            logger.error("错误原因:", e);
        }
        logger.info("Process end.");
    }
}
Main.java

5.通过javac将Main.java编译成Main.class

# 由于Main.java包含中文,这边编译时加上utf-8的编码,否则容易出现乱码
# 将slf4j-api-1.7.9.jar加入到classpath中
javac -encoding "utf-8" -cp slf4j-api-1.7.9.jar com\itranswarp\learnjava\Main.java

6.运行Main.class,运行时需要将slf4j与logback的包都放到classpath中

java -cp .;logback-classic-1.2.3.jar;logback-core-1.2.3.jar;slf4j-api-1.7.9.jar com.itranswarp.learnjava.Main

运行结果如下:

 

posted @ 2020-12-31 15:41  啊行啊  阅读(312)  评论(0编辑  收藏  举报