使用log日志系统而不是使用System的意义:
1,打印不可控制
如果不需要日志,那么使用system需要删除或者删除所有的相关代码,而log可以通过配置文件控制开关.
2,没有分级
log至少有5级,可以分层显示日志,而system一股脑打印出来.
slf4j介绍:
slf4j不是一个真正的日志实现,而是一个抽象层,它允许你在后台使用任意一个日志类库。这样在扩展功能时,你真不会希望使用你扩展代码必须使用你选择的日志类库。
本文使用maven完成slf4j的配置,之所以使用maven是为了只需要提供slf4j的依赖,maven会自动下载关联的依赖.
Maven project->create a simple project->输入group id和artifact id->补全残缺的目录(如果完整的就不需要了)
这部分可以参考http://blog.csdn.net/fengsigaoju/article/details/75003651
接下去提供log.properties配置文件控制日志系统
在src/main/resources下新建log.properties
log4j.rootLogger=INFO, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
在src/main/java 新建logTest 类
import java.text.MessageFormat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class logTest {
private static final Logger logger = LoggerFactory.getLogger(logTest.class);
public static void main(String[] args) {
// 直接打印字符串
logger.info("姓名:凤思高举,密码:******");
String username = "凤思高举";
String password = "******";
// 拼接字符串写法
logger.info("姓名:" + username + ",密码:" + password);
// 使用MessageFormat的写法
logger.info(MessageFormat.format("姓名:{0},密码:{1}", username, password));
}
}
最终结果:
INFO [main] (logTest.java:10) - 姓名:凤思高举,密码:******
INFO [main] (logTest.java:16) - 姓名:凤思高举,密码:******
INFO [main] (logTest.java:19) - 姓名:凤思高举,密码:******
可以在项目的根目录下找到输入到文件中的配置文件example.log
————————————————
版权声明:本文为CSDN博主「fengsigaoju」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fengsigaoju/java/article/details/76945937
maven 中 java-slf4j的使用
Maven web 项目中日志记录
1.pom.xml中引用
<!-- log --> <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> <!-- <scope>test</scope> --> </dependency>
2.日志配置log4j.properties
log4j.rootLogger=CONSOLE,FILE log4j.addivity.org.apache=true # 应用于控制台 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Threshold=INFO log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.Encoding=UTF-8 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n # 每天新建日志 log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.File=D:/log4j/log log4j.appender.A1.Encoding=UTF-8 log4j.appender.A1.Threshold=DEBUG log4j.appender.A1.DatePattern='.'yyyy-MM-dd log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L : %m%n #应用于文件 log4j.appender.FILE=org.apache.log4j.FileAppender log4j.appender.FILE.File=E:/log4j/file.log log4j.appender.FILE.Append=false log4j.appender.FILE.Encoding=UTF-8 log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
3.代码中使用
private static final Logger log = LoggerFactory.getLogger(AppLog.class); public static void main(String[] args) { log.debug("debug"); log.info("info"); log.error("error"); }