在程序中使用log4j

1.导入包
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

2.获取log实例
 Logger logger = Logger.getLogger

3配置log4j.properties
PropertyConfigurator.configure(log4j2.properties路径);

 #\u5B9A\u4E49DEBUG\u4F18\u5148\u7EA7\uFF0CR\u4E3A\u65E5\u5FD7\u8F93\u51FA\u76EE\u7684\u7684
log4j.rootLogger=DEBUG, R
#\u8BBE\u7F6E\u65E5\u5FD7\u8F93\u51FA\u7C7B\u578B,\u4E3A\u6587\u4EF6\u7C7B\u578B
log4j.appender.R=org.apache.log4j.FileAppender
#\u8BBE\u7F6E\u65E5\u5FD7\u6587\u4EF6\u540Dmy.log
log4j.appender.R.file=my.log
#\u6BCF\u6B21\u5728\u6587\u4EF6\u5C3E\u5199\u5165\u65B0\u7684\u65E5\u5FD7\u4FE1\u606F
log4j.appender.R.Append=true
#\u65E5\u5FD7\u8F93\u51FA\u4FE1\u606F\u683C\u5F0F\u7C7B\u578B
log4j.appender.R.layout=org.apache.log4j.PatternLayout
#\u65E5\u5FD7\u8F93\u51FA\u4FE1\u606F\u683C\u5F0F\u4E3A \u6362\u884C\u3001\u6362\u884C\u3001\u65E5\u671F\u3001\u4F18\u5148\u7EA7\u3001[\u7C7B\u540D]\u3001\u65E5\u5FD7\u4FE1\u606F\u3001\u6362\u884C
log4j.appender.R.layout.ConversionPattern=%n%n%d %p [%c] %r %n#%m%n
package LogTest;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator; class Log {
// Logger实例
private Logger loger;
// 将Log类封装成单实例的模式,独立于其他类。以后要用到日志的地方只要获得Log的实例就可以方便使用
private static Log log; // 构造函数,用于初始化Logger配置需要的属性
private Log() {
// 获得当前目录路径
String filePath = this.getClass().getResource("/").getPath();
// 找到log4j.properties配置文件所在的目录(已经创建好)
filePath = filePath.substring(1).replace("bin", "src");
// 获得日志类loger的实例
loger = Logger.getLogger(this.getClass());
// loger所需的配置文件路径
PropertyConfigurator.configure(filePath + "log4j.properties");
} static Log getLoger() {
if (log != null)
return log;
else
return new Log();
} // 测试函数
public static void main(String args[]) {
Log log = Log.getLoger();
try {
// 引发异常
int a = 2 / 0;
} catch (Exception e) {
// 控制台打印异常信息
e.printStackTrace();
// 写入到日子文件
//System.out.println(e.getMessage());
log.loger.info("error",e); }
} }

  

logger.debug("Here is some DEBUG");

logger.info("Here is some INFO");

logger.warn("Here is some WARN");

logger.error("Here is some ERROR");

logger.fatal("Here is some FATAL");

%m 输出代码中指定的信息 如 log.error("error")
%p 输出优先级 就是上面提到的DEBUG,INFO等
%c 输出所在类的全名
%r 输出自应用启用到输出该log信息耗费的时间(毫秒)
%t 输出产生该日子事件的线程名
%n 输出换行符号 Windows平台为 "rn",unix平台“n"
%d 输出日志时间点 默认格式是ISO8601 可以自定义格式,比如%d{yyy MM dd hh:mm:ss,sss}

最新文章

  1. android之animation
  2. HTTP权威协议笔记-7.缓存
  3. sqlite 删除表中重复数据(亲测可用)
  4. Lucene/Solr搜索引擎开发笔记 - 第2章 Solr安装与部署(Tomcat篇)
  5. excel动态去重和动态排序
  6. 1306.Sequence Median(堆排序)
  7. jsonp跨域问题记录
  8. [转]Binarized Neural Networks_ Training Neural Networks with Weights and Activations Constrained to +1 or −1
  9. 剑指Offer——知识点储备-数据库基础
  10. Python——Tk控件说明
  11. django安装命令
  12. 1.1、CDH 搭建Hadoop在安装之前(配置网络名称)
  13. ASP.NET 在OnClientClick中js方法直接调用Eval绑定字段的数据
  14. Weex 实现文件的下载
  15. openfire聊天记录插件
  16. Oracle导出空表解决办法
  17. HDU 2106 母猪的故事
  18. erp中三大订单CO、PO、MO
  19. 2-7 js基础-ajax封装
  20. SVN无法Cleanup

热门文章

  1. Oracle数据库管理系统下对数据库操作常用命令
  2. 集成ShareSDK里报错NSConcreteMutableData wbsdk_base64EncodedString]
  3. virtualbox中centos系统配置nat+host only上网
  4. EF DbModelBuilder
  5. Hibernate整合C3P0实现连接池
  6. Thread 与 Runnable
  7. Java中jsp和Servlet的区别
  8. yii2 如何用命名空间方式使用第三方类库
  9. UML类图之类与类的关系
  10. codeforces #270 ABCD