java通过SLF4J和Logback实现日志输出(通过命令行编译)
1.本次测试环境的目录结构如下:
2.下载SLF4J和Logback,将其放在src目录,下载地址分别为https://www.slf4j.org/download.html与https://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>
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."); } }
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
运行结果如下: