log4j简易入门

package test.log4j;

import org.apache.log4j.Logger;

publicclass HelloLog4j {privatestaticfinal Logger logger = Logger.getLogger(HelloLog4j.class);publicstaticvoid main(String[] args) {        logger.debug("This is debug message");        logger.info("This is info message");        logger.warn("This is warn message");        logger.error("This is error message");    }}

log4j简单配置log4j.properties

#可以设置级别:debug < info < warn < error#debug: 显示debug, info, warn, error#info: 显示info, warn, error#warn: 显示warn, error#error: 只显示error#日志的输出级别由rootLogger和普通Logger设置的最高级别决定。

#log4j.rootLogger=debug,appender1#log4j.rootLogger=info,appender1log4j.rootLogger=warn,appender1#log4j.rootLogger=error,appender1

#输出到控制台log4j.appender.appender1=org.apache.log4j.ConsoleAppender#样式为TTCCLayoutlog4j.appender.appender1.layout=org.apache.log4j.TTCCLayout

#这里配置的是类所在的包test.log4j, 逗号之前未配置日志输出级别,默认为根logger的级别log4j.logger.test.log4j=, TESTlog4j.appender.TEST=org.apache.log4j.ConsoleAppenderlog4j.appender.TEST.layout=org.apache.log4j.TTCCLayout

log4j提供的Appender

org.apache.log4j.ConsoleAppender(控制台),org.apache.log4j.FileAppender(文件),org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

log4j提供的Layout

org.apache.log4j.HTMLLayout(以HTML表格形式布局),org.apache.log4j.PatternLayout(可以灵活地指定布局模式),org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下: 
  %m 输出代码中指定的消息  %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL  %r 输出自应用启动到输出该log信息耗费的毫秒数  %c 输出所属的类目,通常就是所在类的全名  %t 输出产生该日志事件的线程名  %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”  %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921  %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

以上资料参考:http://www.iteye.com/topic/378077

slf4j简介

SLF4J不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

实际上,SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类。从某种程度上,SLF4J有点类似JDBC,不过比JDBC更简单,在JDBC中,你需要指定驱动程序,而在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。如同使用JDBC基本不用考虑具体数据库一样,SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统

slf4j简单示例

package test.slf4j;

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

publicclass HelloSlf4j {privatestaticfinal Logger logger = LoggerFactory.getLogger(HelloSlf4j.class);publicstaticvoid main(String[] args) {        logger.debug("This is debug message");        logger.info("This is info message");        logger.warn("This is warn message");        logger.error("This is error message");    }}

假设使用log4j做为底层日志工具,运行以上程序需要三个包:log4j-1.2.xx.jar、slf4j-api-x.x.x.jar、以及slf4j-log4j12-x.x.x.jar,后两个包由slf4j提供,包名中的x表示版本号。

获得logger对象:

java代码:

  1. private static final Logger logger = LoggerFactory.getLogger(Test.class);
  2. 输出日志信息:
  3. logger.debug(“debug”);

slf4j中的占位符—不再需要冗长的级别判断

大家应该还记得,在log4j中,为了提高运行效率,往往在输出信息之前,还要进行级别判断,以避免无效的字符串连接操作。如下:
if (logger.isDebugEnabled()){
logger.debug(“debug:“+name);
}
slf4j巧妙的解决了这个问题:先传入带有占位符的字符串,同时把其他参数传入,在slf4j的内容部实现中,如果级别合适再去用传入的参数去替换字符串中的占位符,否则不用执行。
logger.info("{} is {}", new String[]{“x",“y"});

slf4j 与log4j 日志管理相关推荐

  1. 项目log4j日志管理详解

    项目log4j日志管理详解 项目log4j日志管理详解 log4j日志系统在项目中重要性在这里就不再累述,我们在平时使用时如果没有特定要求,只需在log4j.properties文件中顶入输出级别就行 ...

  2. Log4j日志管理的用法

    参考网址: http://www.blogjava.net/314508313/archive/2011/11/14/363653.html http://www.cnblogs.com/likwo/ ...

  3. 【SSM基础】Logback日志管理

    [SSM基础]Logback日志管理 其他文章: bookcase微服务实战 1.前言 这篇我们说下日志管理,业界常用的日志管理一共有几种: java.util.Logging,Log4j,Log4j ...

  4. spring cloud多模块项目框架搭建-集成SLF4J和log4j2日志组件

    第七章  集成SLF4J和log4j2进行日志管理 本系列博客旨在搭建一套能用于实际开发使用的spring cloud多模块项目框架,并不是一个spring cloud的demo而已,提供分布式系统的 ...

  5. 智能一代云平台(三十三):log4j日志研究

    [前言] 日志对于一个系统的来说是必不可少,它可以让人们知道,系统当前运行的状况:最近对日志进行了一些实践,以下是自己在这个过程中收获的一些东西. [一些有趣的实验]          一.mybat ...

  6. 日志管理:(三)配置_JCL+Log4J中遇到的问题

    今天,要做一个很简单的事,那就是项目上线了,需要把各个子功能的日志分开,方便系统出线问题后,日志的查看,用过log4j的童鞋们都知道,这是很简单的,配置一个appender,再配置一个category ...

  7. java日志框架JUL、JCL、Slf4j、Log4j、Log4j2、Logback 一网打尽

    为什么程序需要记录日志 我们不可能实时的24小时对系统进行人工监控,那么如果程序出现异常错误时要如何排查呢?并且系统在运行时做了哪些事情我们又从何得知呢?这个时候日志这个概念就出现了,日志的出现对系统 ...

  8. SpringBoot中使用log4j进行日志管理

    场景 SpringBoot项目中使用log4j进行日志管理. 实现 1.因为SpringBoot默认是使用logback,所以要修改pom.xml 过滤掉自带的spring-boot-starter- ...

  9. 日志管理(一):slf4j原理简单介绍

    转载自:http://blog.sina.com.cn/s/blog_6f67b91d0100tpqh.html 全称:Simple Logging Facade for Java  简单日志门面(F ...

最新文章

  1. 2021年大数据常用语言Scala(二十九):scala面向对象 单例对象
  2. UI调试神器 for ios:Reveal的使用与破解
  3. 问题 1044: [编程入门]三个字符串的排序
  4. 7时过2小时是几时_2017最北师大版二年级下册数学第七单元《时、分、秒》过关检测卷...
  5. java流读取字符串_javaIO之字符流是怎么读取的?
  6. 3000类别,20万个标注,山师等推出大规模Logo检测数据集:LogoDet-3K
  7. 一文讲清楚FusionInsight MRS CDL如何使用
  8. hana抽数到mysql,HANA数据库管理Tenant DB常用操作
  9. 如何查看表或列的所有外键?
  10. hist 和imhist的区别
  11. 计算机安全审计技术工作总结,计算机安全审计技术研究
  12. 如何在vue中使用Cesium加载shp文件、wms服务、WMTS服务
  13. C语言read和write函数解析
  14. 关于微信平台朋友和朋友圈分享不回调的问题。
  15. 双鱼直播动态调试 .so文件输出密匙
  16. java判断时间段是否交叉重叠
  17. CF545C题解【贪心】
  18. kubernetes存储:local,openEBS,rook ceph
  19. 天大青医堂第十期报告会之一
  20. python按指定概率抽样_python:抽样和抽样方法

热门文章

  1. 鸿蒙之光一星辰是什么意思,如果说安卓的目标是太阳,那么鸿蒙的目标就是星辰大海...
  2. HTML+CSS物业后台管理系统模板
  3. 高价买的博客网站织梦模板
  4. Quartz_简单编程式任务调度使用(SimpleTrigger)
  5. 一起学习Windows Phone7开发(十八. Windows Phone7 Toolkit)
  6. 网站统计:第一方Cookie和第三方Cookie
  7. PHP中逻辑运算符的高效用法---和||
  8. Memcached 一致性哈希算法PHP实现
  9. IAR #pragma optimize 指令
  10. 【图说word】宏二