关于log4j的使用
来源:互联网 发布:淘宝限时打折要钱吗 编辑:程序博客网 时间:2024/06/05 06:46
单独使用log4j
所需jar包:
<!-- log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
代码实例:
package com.xxx.common; import org.apache.log4j.Logger; /** * 单独使用log4j实例 * 缺点: 日志代码耦合性大 * * * @author Administrator * */ public class Log4jTest { private static Logger log = Logger.getLogger(Log4jTest.class); public static void main(String[] args) { Log4jTest log4jtest = new Log4jTest(); log4jtest.log(); } /** * 测试打印log */ public void log(){ /** * 为什么不是直接logger.debug(“debug:“+name);呢? * 在配置文件中虽然可以使用控制级别为比debug级别更高的级别,如 info, warn,error,fatal * 而不输出debug信息;但是,这里的字符串连接操作仍然会影响运行效率; * 如果先判断当前logger的级别,如果级别不合适的话,连这句字符串连接都可以不做了。 */ if (log.isDebugEnabled()){ log.debug("------DEBUG------"); } log.info("------INFO------"); log.warn("------WARN------"); log.error("------ERROR------"); log.fatal("------FATAL------"); }}
commons-logging 和log4j 结合使用
commons-logging 是apache提供的一个通用日志接口,用户可以自由选择第三方日志组件作为具体实现,像log4j等; commons-logging和log4j结合一起使用, 日志代码依赖于commons-logging而非log4j, 降低了日志代码的耦合性, 如果有需要更换日志实现类, 就会方便许多.
所需jar包:
<!-- commons-logging 公共logger接口, LogFactory 自动筛选 合适的logger工具 log4j > ... > simpleLog(都找不到,用自带的) --> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1</version> </dependency> <!-- log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
代码实例
package com.xxx.common; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class CLTest { private static Log log = LogFactory.getLog(CLTest.class); public static void main(String[] args) { CLTest clTest = new CLTest(); clTest.log(); } public void log(){ if (log.isDebugEnabled()) { log.debug("Debug info."); } log.info("Info info"); log.warn("Warn info"); log.error("Error info"); log.fatal("Fatal info"); } }
slf4j和log4j结合使用
所需jar包:
<!-- log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!-- slf4j 包 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.12</version> </dependency> <!-- slf4j-log4j12 包 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.12</version> </dependency>
代码实例:
package com.xxx.common; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 简单日记门面(simple logging Facade for java) * slf4j 和 log4j 结合使用, 接口: slf4j 实现类: log4j * 优点: * 1 SLF4J提供了占位日志记录,通过移除对isDebugEnabled(), * isInfoEnabled()等等的检查提高了代码的可读性。 * 2 通过使用日志记录方法,直到你使用到的时候,才会去构造日志信息(字符串), * 这就同时提高了内存和CPU的使用率 * @author Administrator * */ public class SLTest { private static final Logger logger = LoggerFactory.getLogger(SLTest.class); public static void main(String[] args) { SLTest sLTest = new SLTest(); sLTest.log(); } public void log(){ /** * 大家应该还记得,在log4j中,为了提高运行效率, * 往往在输出信息之前,还要进行级别判断, * 以避免无效的字符串连接操作。如下: * if (logger.isDebugEnabled()){ * logger.debug(“debug:“+name); * } * slf4j巧妙的解决了这个问题:先传入带有占位符的字符串, * 同时把其他参数传入,在slf4j的内容部实现中, * 如果级别合适再去用传入的参数去替换字符串中的占位符,否则不用执行。 * logger.info("{} is {}", new String[]{“x",“y"}); */ logger.debug("{}he{}",new Object[]{"object:","YY"}); logger.info("{} info is {} and {}",new Object[]{"1","2","2"}); //也可以不传object数组,传具体参数也行 logger.error("error is {} and {}","1","2");; } }
log4j配置文件解析
### set log levels ### log4j.rootLogger = debug , stdout , D , E , R ### 1: 输出到控制台 ### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out ## 输出INFO级别以上的日志 log4j.appender.stdout.Threshold = DEBUG log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n ### 2: 按日期生成debug以上级别到日志文件 ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender #文件路径对, 没有文件夹 , 是会自动建立文件夹的 log4j.appender.D.File = C:/Users/Administrator/Desktop/logs/log.log log4j.appender.D.Append = true ## 输出DEBUG级别以上的日志 log4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n ### 3: 按日期生成error级别以上信息到文件 ### log4j.appender.E = org.apache.log4j.DailyRollingFileAppender ## 异常日志文件名 log4j.appender.E.File =C:/Users/Administrator/Desktop/logs/error.log log4j.appender.E.Append = true ## 只输出ERROR级别以上的日志!!! log4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n ### 4: 按文件大小生成总量小于一定个数的日志文件 ### #按大小分割,循环覆盖 log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.MaxFileSize=1MB log4j.appender.R.MaxBackupIndex=2 log4j.appender.R.File=C:/Users/Administrator/Desktop/logs/partLog.log log4j.appender.R.Threshold=DEBUG log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%d %p %C.%M(%L) | %m%n
0 0
- 关于log4j的使用
- 关于log4j的使用
- 关于JAVA 中使用 log4j 的过程
- 关于log4J与Junit4的使用
- 关于Log4j使用
- 关于hibernate使用log4j
- 最好的一篇关于Log4j的使用的文章
- 最好的一篇关于Log4j的使用的文章
- 关于log4j的应用
- 关于log4j的问题
- 关于log4j的配置
- 关于log4j的研究
- 关于Log4j的初始化
- 关于log4j的使用说明
- 关于Log4j的总结
- 关于log4j在实际工作中使用的一些想法
- Log4j的使用!
- Log4j的使用
- 冒泡 选择 插入 归并 快排 堆排 希尔
- js中返回含js代码问题(<script></script>)
- 在Android Studio上快速导入Eclipse风格
- linux mongodb 安装
- log4j.properties详解与例子
- 关于log4j的使用
- 用java求“交、叉、并集”
- menuconfig菜单选项
- TrustZone 基本信息介绍大全
- warning: push.default is unset; its implicit value has changed in Git 2.0 from 'matching' to 'simple
- Rect四个参数解释
- AsyncTask源码解析
- Java编程思想第四版读书笔记——第十一章 持有对象
- 基于MDK平台 cortex-M3 shell 的实现