【java】日志打印

日常开发中,想打印某些值的信息时

总是Syso=>System.out.pringln(xxx)

然后在代码规范里看到了,禁止使用这种方式打印信息,可以选择日志工具打印查看

日常使用的工具有log4j、logback、slf4j

log4j必须配置配置文件log4j.properties,类似下面这样,可以指定打印级别

# Configure logging for testing: optionally with log file
log4j.rootLogger=INFO, stdout 
# log4j.rootLogger=WARN, stdout, logfile

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

一般log4j会和commons-logging搭配使用

commons-logging提供一个统一的日志接口,简单了操作,同时避免项目与某个日志实现系统紧密a耦合很贴心的帮我们自动选择适当的日志实现系统(这一点非常好!)它甚至不需要配置

在使用时,会从classpath查找commons-logging.properties文件

若找不到,则在查找是否已定义系统环境变量org.apache.commons.logging.Log,找到则使用其定义的Log实现类
这样使用

private static Log log = LogFactory.getLog(YouClassName. class );

Slf4j

主要还是用这个打印日志吧
不需要配置文件,只需要依赖slf4j-api即可

然后使用时直接

private static final Logger LOGGER = LoggerFactory.getLogger(CheckCodeUtills.class);

然后使用

LOGGER.info、warn、error(xxxx)

之类的

注解方式

只需要在需要使用的类上加上(需要提前引入lombok依赖)

@Slf4j

然后在使用时

log.info、warn....(xxxx)

即可

另外下面这篇博客说明了slf4j和log4j的好坏

https://www.oschina.net/translate/why-use-sl4j-over-log4j-for-logging