前言:
之前笔者一直是在System.out中打日志的,由于笔者大部分时候是编写在tomcat容器里运行的一些个小web应用,所以这么做似乎没什么问题:打印出来的日志都可以在tomcat自己的log目录下的一些个日志文件里找到。但是,最近笔者接触到一个项目,需要编写一个不依赖于容器的能够直接在系统上运行的socket服务器程序,使得笔者急需一个能够打自己日志的地方,于是开始学习log4j。顺便,也逼迫笔者真正的好好学习关于流、比http更为底层TCP和其对应的socket通信、多线程等知识。
正文开始
log4j目前已经发布了2.0版本,但本例子中使用的仍是最普遍使用的log4j1.2版本。
将log4j-1.2.17.jar下载并添加到项目中后,在java项目的src根目录中添加配置文件log4j.properties
#设置级别 log4j.rootLogger=debug,appender1 #输出到文件(这里默认为追加方式) log4j.appender.appender1=org.apache.log4j.FileAppender #设置文件输出路径 log4j.appender.appender1.File=C:/Users/lixin/Desktop/myproject.log #设置文件输出样式 log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
然后在一个最简单的java程序中测试这个例子: 向桌面的myproject.log中写日志
package com.myproject.test; import org.apache.log4j.Logger; public class MyTestClass { private static Logger logger = Logger.getLogger(MyTestClass.class); public static void main(String[] args){ System.out.println("Hello world"); logger.info("----交易日志,日志级别info----->"+"hello world"+"<--------"); } }
运行,myproject.log中显示:
[main] INFO com.myproject.test.MyTestClass - ----交易日志,日志级别info----->hello world<--------