log4j有各种信息,只输出错误信息的话,你在程序里就只调用error级别的就可以了。
修改log4j.properties的日志级别,一般error是肯定要输出的,还有就是警告信息warn:log4j.rootLogger=WARN就可以了。输出的信息是你自己在程序中调用日志记录方法的时候写进去的,如果不想要别的信息就不进行记录就可以了。
log4j怎样控制只输出自己写的代码的日志,不输出框架中的日志:
1、输出两次是因为你的mylog配置有误:
log4j.appender.myLog.Target=System.out,你应该是要改成一个输出到一个文件吧,控制台已经有输出了。
2、类名问题: private static Logger log = Logger.getLogger("myLog")这种写法也可以,你在输出项配置中直接写一个%c或%l试试,应该没有用Ant运行吧,如果是Ant编译的话有一个DEBUG的选项要启用才行。
3、输出指定包的方法直接log4j.logger.包名。你可以通过log4j.rootLogger=OFF来屏蔽其他输出。以下配置屏蔽SSH框架的日志输出:
log4j.logger.org.springframework=OFF
log4j.logger.org.apache.struts2=OFF
log4j.logger.com.opensymphony.xwork2=OFF
log4j.logger.com.ibatis=OFF
log4j.logger.org.hibernate=OFF
1.先看log4j的配置文件:log4j.rootLogger=INFO,R,Client
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=./log/server.log
log4j.appender.R.MaxFileSize=5MB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%5p] %d [%X{userName}] [%X{remoteIp}] %m%n
log4j.logger.Client=INFO,Client
log4j.additivity.Client = false
log4j.appender.Client=org.apache.log4j.RollingFileAppender
log4j.appender.Client.File=./log/client.log
log4j.appender.Client.MaxFileSize=5MB
log4j.appender.Client.MaxBackupIndex=10
log4j.appender.Client.layout=org.apache.log4j.PatternLayout
log4j.appender.Client.layout.ConversionPattern=[%5p] %d [%X{userName}] [%X{remoteIp}] %m%n
此日志文件分为两个日志文件.一个是给服务器程序记录日志,另一个是给客户端程序记录日志的.
红色部分是必须要加的.
log4j.additivity.Client = false 确保写入client.log文件信息不重复出现到server.log文件中.
log4j.logger.Client=INFO,Client 确保只对log4j的info信息感兴趣.
2.再看代码的初使化:
//加入log4j支持
static Logger logger =Logger.getLogger("Client")
3.最后运行要记录的类.
呵呵,轻松搞定.
你的意思是每产生一条日志就写入数据库?首先你这个思路有问题,日志别保存进数据库,因为这会增加非常多的插入操作,严重影响性能。
如果你非要保存进数据库,我给你提供一种解决方案:你可以利用Timer类计时,在每天的某个时段将log4j所产生的日志文件存入数据库。这样其实也挺多余,如果你希望做的是在客户端或者浏览器(我不知道你做的是什么项目)查看日志文件,可以通过服务器去读取本地的日志文件(我没记错的话,log4j日志文件命名都是按照固定名字+日期来命名),然后处理一下再显示到客户端或者浏览器。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)