在程序中使用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路径);
1 #\u5B9A\u4E49DEBUG\u4F18\u5148\u7EA7\uFF0CR\u4E3A\u65E5\u5FD7\u8F93\u51FA\u76EE\u7684\u7684 2 log4j.rootLogger=DEBUG, R 3 #\u8BBE\u7F6E\u65E5\u5FD7\u8F93\u51FA\u7C7B\u578B,\u4E3A\u6587\u4EF6\u7C7B\u578B 4 log4j.appender.R=org.apache.log4j.FileAppender 5 #\u8BBE\u7F6E\u65E5\u5FD7\u6587\u4EF6\u540Dmy.log 6 log4j.appender.R.file=my.log 7 #\u6BCF\u6B21\u5728\u6587\u4EF6\u5C3E\u5199\u5165\u65B0\u7684\u65E5\u5FD7\u4FE1\u606F 8 log4j.appender.R.Append=true 9 #\u65E5\u5FD7\u8F93\u51FA\u4FE1\u606F\u683C\u5F0F\u7C7B\u578B 10 log4j.appender.R.layout=org.apache.log4j.PatternLayout 11 #\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 12 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}