log4j怎样控制只输出自己写的代码的日志,不输出框架中的日志?

发布于 2021-12-04 19:02:17 字数 360 浏览 839 评论 10

我刚才在log4j配置文件中加了一个段配置如下(myLog下面的一部分):

log4j.rootLogger=warn,CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH
              

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

2021-12-05 10:53:18

log4j.category.+packageName/className=ERROR

好听的两个字的网名 2021-12-05 10:53:18
log4j.additivity.myLog=false
毁梦 2021-12-05 10:52:19

%c 选项输出的是日志信息所在地,本来是一个类名的,但是你创建的时候传的是一个字符串,估计就没法得到类名了

巡山小妖精 2021-12-05 10:45:48

没道理,java反射机制很容易得到。可能只是没找到方法而已。

奈何桥上唱咆哮 2021-12-05 09:50:48

刚才改成这样,输出两次的问题解决了。为2012-12-05 17:55:01  INFO myLog:68 - 你好啊。但是类名还是不是LoginAction

log4j.rootLogger=warn,CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n


log4j.logger.myLog=info

log4j.appender.myLog=org.apache.log4j.ConsoleAppender
log4j.appender.myLog.layout=org.apache.log4j.PatternLayout
log4j.appender.myLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
月牙弯弯 2021-12-05 08:08:28

Hibernate可以通过配置log4j.logger.org.hibernate.SQL=debug 来控制他的SQL相关的日志输出,我也想来这样控制我自己的某个方面的日志。这才是我们问题。

如此安好 2021-12-05 05:50:28

一般情况下只需要定义一个到控制台的输出即可,还会顶一个到文件的输出,如下

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j.rootLogger=warn, stdout的意思是如果没有其他的话系统中所有日志级别都是warn,可以指定给哪些包来指定何种级别,这样就会覆盖rootLogger的级别比如:

log4j.logger.org.hibernate=debug

log4j.logger.org.hibernate.SQL=debug

为什么会输出2次,那是因为你定义了2个到控制台的输出

简单气质女生网名 2021-12-05 05:26:35

第二点,我之前都是那样写的,但是发现无法控制只输出自己代码中的日志,我自己在log4j中加了一个myLog专门用于自己代码的日志输出。

兮颜 2021-12-05 00:15:50

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 

爱你是孤单的心事 2021-12-04 22:21:03

private static Logger log = Logger.getLogger(LoginAction.class);改成这样的话,就没办法控制自己的和框架的日志了。我用那种getLogger("myLog")构造函数得到日志就是为了只输出自己写的代码中的日志,与其它任何日志区别开来。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文