博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
idea工具java日志 Log4j+slf4j使用
阅读量:6155 次
发布时间:2019-06-21

本文共 5726 字,大约阅读时间需要 19 分钟。

hot3.png

参考博文:

这几天一直在用logger记录日志,但一直不明白log4j.properties配置文件意思,下面看看其他博主文章给自己充充电。

本人认为日志记录不仅可以帮记录执行结果,看代码执行是否正常,并且在排查问题时也能很快帮助你定位有问题代码。

一、介绍

Log4j是一个用Java编写的可靠,快速和灵活的日志框架(API),是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。

Log4j由三个重要的组件构成:

  • loggers: 负责捕获记录信息,日志信息的优先级

  • appenders : 负责发布日志信息,日志信息的输出目的地

  • layouts: 负责格式化不同风格的日志信息,日志信息的输出格式

注意:

1、日记记录的优先级(低到高)

#  控制台显示的内容是:优先级大于等于log4j.properties中配置的信息。

# ALL< DEBUG < INFO < WARN < ERROR < FATAL < OFF.

# Log4j建议只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG这五个级别。
# ERROR 为严重错误 主要是程序的错误
# WARN 为一般警告,比如session丢失
# INFO 为一般要显示的信息,比如登录登出
# DEBUG 为程序的调试信息

2、Log4j配置简单示列:

第一步:maven 依slf4j包或手动引入如下jar包

1、slf4j-api-1.7.5.jar

2、slf4j-log4j12-1.7.5.jar

3、log4j-1.2.16.jar

第二步:在resource中配置log4j.properties(或者log4j.xml)配置文件

#配置根Loggerlog4j.rootLogger = [ level ] , appenderName1 , appenderName2 , …#配置日志信息输出目的地Appenderlog4j.appender.appenderName = fully.qualified.name.of.appender.classlog4j.appender.appenderName.option1 = value1log4j.appender.appenderName.optionN = valueN #配置日志信息的格式(布局)log4j.appender.appenderName.layout = fully.qualified.name.of.layout.classlog4j.appender.appenderName.layout.option1 = value1log4j.appender.appenderName.layout.optionN = valueN

    appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地

log4j.rootLogger=DEBUG,console,D,Elog4j.appender.console=org.apache.log4j.ConsoleAppenderlog4j.appender.console.layout = org.apache.log4j.PatternLayoutlog4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%c]-[%p] %m%n# 输出DEBUG 级别以上的日志到log4j.appender.D = org.apache.log4j.RollingFileAppenderlog4j.appender.D.Threshold=DEBUG# DEBUG 级别以上的日志输出目录log4j.appender.D.File = C:/Users/admin/Desktop/debug.loglog4j.appender.D.Append = truelog4j.appender.D.MaxFileSize=5MBlog4j.appender.D.layout= org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%c]-[%p] %m%n# 输出ERROR 级别以上的日志到log4j.appender.E = org.apache.log4j.RollingFileAppenderlog4j.appender.E.Threshold=ERRORlog4j.appender.E.File = C:/Users/admin/Desktop/error.loglog4j.appender.E.Append = truelog4j.appender.E.MaxFileSize=5MBlog4j.appender.E.layout= org.apache.log4j.PatternLayoutlog4j.appender.E.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%c]-[%p] %m%n

注意:Log4j的配置

由于WebApplicationContext需要使用日志功能,用户可以将log4j.properties放置在类路径下,这样就会自动启动。如果放在其他地方,必须在web.xml中指定Log4j配置文件的位置。Spring为启动Log4j引擎提供了两个类og4jConfigServlet和Log4jConfigListener,不管哪种方式都必须保证能够在装载Spring配置文件前先装载Log4J配置信息。

      
log4jConfigLocation
      
/WEB-INF/log4j.properties
      
    
      
log4jConfigServlet
      
org.springframework.web.util.Log4jConfigServlet
      
1
    

第三步:使用日志,在controller层使用日志

@Controller@RequestMapping(value = "/api/controller/brand")public class BrandController {     private static Logger logger = LoggerFactory.getLogger(BrandController.class);    @Autowired    private BrandService brandService;     @RequestMapping(value = "/update", method = RequestMethod.POST)    public Brand update(Model model){        Brand brand = brandService.findByBrandCode("1a9e2fb7-d8d3-4dce-a50b-52c77efb2629");        brandService.update(brand);        //SLF4J的日志消息使用占位符"{}"代替了常用的字符串拼接,据官方说这样速度更快        logger.info("{}更新成功",brand.getId());        logger.error("更新失败");        logger.debug("debug功能");        return brand;    }

3、知识点:

log4j.rootLogger=info,stdout, R 定义 logger记录大于等于info优先级日志信息,stdout表示在控制台显示,R表示日志记录在文件中。

stdout:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender  意思是把日志输出到控制台

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout   意思是日志在控制台显示布局模式

log4j.appender.stdout.layout.ConversionPattern=%d{HH\:mm\:ss} %c{1} - %m%n 表示日志输出的格式,%d{HH\:mm\:ss} %c{1} - %m%n表示时:分:秒 类名 日志信息 换行

R:

log4j.appender.R=org.apache.log4j.RollingFileAppender  :日志文件大小到达指定尺寸的时候产生一个新的文件

log4j.appender.R.File=mat.log 表示是放日志文件的路径

log4j.appender.R.MaxFileSize=5MB   表示指定日志文件大小

log4j.appender.R.layout=org.apache.log4j.PatternLayout  日志记录的布局模式

log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%c]-[%p] %m%n 表示日志输出格式

年-月-日 时:分:秒 类名 优先级显示日志信息 换行

#appender名字定义

#appender名字定义

log4j.rootLogger=INFO,FILE,consoleAppender,RollingFile,MAIL,DailyRollingFile,DATABASE
log4j.addivity.org.apache=true

#配置日志信息输出目的地

#log4j.appender.appenderName = fully.qualified.name.of.appender.class
#(如:log4j.appender.RollingFile = org.apache.log4j.RollingFileAppender)
# 1.org.apache.log4j.ConsoleAppender(控制台)
# 2.org.apache.log4j.FileAppender(文件)
# 3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
# 4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
# 5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

#配置日志信息的格式

#log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
#(如:log4j.appender.RollingFile.layout = org.apache.log4j.HTMLLayout)
# 1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),
# 2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
# 3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
# 4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

#输出格式:layout中的参数都以%开始,后面不同的参数代表不同的格式化信息(参数按字母表顺序列出):

# %c 输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的维(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName)

# %d 输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}
# %l 输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
# %n 换行符
# %m 输出代码指定信息,如info(“message”),输出message
# %p 输出优先级,即 FATAL ,ERROR 等
# %r 输出从启动到显示该log信息所耗费的毫秒数
# %t 输出产生该日志事件的线程名

#ConsoleAppender,控制台输出
#FileAppender,文件日志输出
#SMTPAppender,发邮件输出日志
#SocketAppender,Socket日志
#NTEventLogAppender,Window NT日志
#SyslogAppender,
#JMSAppender,
#AsyncAppender,
#NullAppender

转载于:https://my.oschina.net/luyaolove/blog/360428

你可能感兴趣的文章
eclipse打开工作空间(workspace)没有任务反应
查看>>
使用Sybmol模块来构建神经网络
查看>>
字符串去分割符号
查看>>
WPF中,多key值绑定问题,一个key绑定一个界面上的对象
查看>>
UML类图简明教程
查看>>
java反编译工具(Java Decompiler)
查看>>
Android开发之自定义对话框
查看>>
微信Access Token 缓存方法
查看>>
Eclipsed的SVN插件不能识别之前工作空间的项目
查看>>
Linux 查看iptables状态-重启
查看>>
amazeui学习笔记一(开始使用2)--布局示例layouts
查看>>
c#中lock的使用(用于预约超出限额的流程)
查看>>
ODI基于源表时间戳字段获取增量数据
查看>>
并发容器之CopyOnWriteArrayList(转载)
查看>>
什么是AAC音频格式 AAC-LC 和 AAC-HE的区别是什么
查看>>
原创:goldengate从11.2升级到12.1.2
查看>>
Quartz
查看>>
正则表达式的语法规则
查看>>
C#一个关于委托和事件通俗易懂的例子
查看>>
类似于SVN的文档内容差异对比工具winmerge
查看>>