标签: log4j

记录器(log4j)没有找到appender?

我已经将log4j放到我的buildpath中,但是当我运行我的应用程序时收到以下消息:

log4j:WARN No appenders could be found for logger (dao.hsqlmanager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Run Code Online (Sandbox Code Playgroud)

这些警告意味着什么?什么是appender在这里?

java eclipse log4j

341
推荐指数
13
解决办法
60万
查看次数

如何正确初始化log4j?

将log4j添加到我的应用程序后,每次执行应用程序时都会得到以下输出:

log4j:WARN No appenders could be found for logger (slideselector.facedata.FaceDataParser).
log4j:WARN Please initialize the log4j system properly.

这似乎意味着缺少配置文件.这个配置文件应该放在哪里,什么是好的开始内容?

我正在使用普通的java来开发桌面应用程序.所以没有网络服务器等......

configuration log4j

273
推荐指数
9
解决办法
54万
查看次数

在log4j中,在记录改进性能之前检查isDebugEnabled吗?

我在我的应用程序中使用Log4J进行日志记录.以前我使用调试调用如:

选项1:

logger.debug("some debug text");
Run Code Online (Sandbox Code Playgroud)

但有些链接表明最好先检查一下isDebugEnabled(),例如:

选项2:

boolean debugEnabled = logger.isDebugEnabled();
if (debugEnabled) {
    logger.debug("some debug text");
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是" 选项2能否以任何方式提高性能? ".

因为在任何情况下Log4J框架都对debugEnabled进行相同的检查.对于选项2,如果我们在单个方法或类中使用多个调试语句可能是有益的,其中框架不需要isDebugEnabled()多次调用方法(在每次调用时); 在这种情况下,它只调用isDebugEnabled()一次方法,如果Log4J配置为调试级别,那么实际上它调用isDebugEnabled()方法两次:

  1. 如果为debugEnabled变量赋值,和
  2. 实际上是由logger.debug()方法调用的.

我不认为如果我们logger.debug()在方法或类中编写多个语句并debug()根据选项1 调用方法,那么与选项2相比,它是Log4J框架的开销.因为它isDebugEnabled()是一个非常小的方法(就代码而言),它可能是内联的好人选.

java logging log4j

192
推荐指数
7
解决办法
10万
查看次数

以编程方式配置Log4j记录器

我是log4j第一次尝试使用SLF4J(带绑定).

我想配置3个不同的名为Logger,它们可以由LoggerFactory返回,它将记录不同的级别并将消息推送到不同的appender:

  • 记录器1"FileLogger"记录DEBUG并附加到 DailyRollingFileAppender
  • 记录器2"TracingLogger"记录TRACE +并附加到a JmsAppender
  • 记录器3"ErrorLogger"记录ERROR +并附加到其他变量 JmsAppender

此外,我希望它们以编程方式配置(在Java中,而不是XML或log4j.properties文件).

我想,通常情况下,我会Logger在某些引导代码中将它们定义为某个init()方法,就像方法一样.但是,因为我想使用slf4j-log4j,我很困惑我可以在哪里定义记录器并使它们可用于类路径.

我不认为这违反了SLF4J的基本目的(作为一个外观),因为我使用SLF4J API的代码永远不会知道这些记录器存在.我的代码只是对SLF4J API进行正常调用,然后将它们转发到它在类路径上找到的log4j Loggers.

但是如何在类路径中配置那些log4j记录器...在Java中?!

java logging log4j slf4j

183
推荐指数
3
解决办法
19万
查看次数

如何停止在火花控制台上显示INFO消息?

我想停止火花壳上的各种消息.

我试图编辑该log4j.properties文件以阻止这些消息.

这是内容 log4j.properties

# Define the root logger with appender file
log4j.rootCategory=WARN, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

# Settings to quiet third party logs that are too verbose
log4j.logger.org.eclipse.jetty=WARN
log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO
Run Code Online (Sandbox Code Playgroud)

但是消息仍在控制台上显示.

以下是一些示例消息

15/01/05 15:11:45 INFO SparkEnv: Registering BlockManagerMaster
15/01/05 15:11:45 INFO DiskBlockManager: Created local directory at /tmp/spark-local-20150105151145-b1ba
15/01/05 15:11:45 INFO MemoryStore: MemoryStore started with capacity 0.0 B.
15/01/05 15:11:45 INFO ConnectionManager: Bound socket to port 44728 with id = ConnectionManagerId(192.168.100.85,44728)
15/01/05 …
Run Code Online (Sandbox Code Playgroud)

log4j apache-spark spark-submit

168
推荐指数
12
解决办法
16万
查看次数

log4j日志记录层次结构顺序

log4j日志记录的层次结构是什么?

DEBUG
INFO
WARN
ERROR
FATAL
Run Code Online (Sandbox Code Playgroud)

哪一个提供最高的日志记录有助于解决问题?任何人都可以提供从最高到最低日志记录的订单或层次结构吗?谢谢!

logging log4j

161
推荐指数
7
解决办法
19万
查看次数

log4j:将特定类的日志输出记录到特定的appender

我使用log4j,并希望将某些Logger的输出路由到特定文件.

我已经有多个appender了.现在,为了使调试更容易,我想告诉log4j应该将特定类(例如foo.bar.Baz)生成的输出写入特定的日志文件.

可以这样做吗?

java logging log4j appender

155
推荐指数
2
解决办法
12万
查看次数

log4j vs logback

我们在自制包装器后面使用log4j.我们现在计划使用它的更多功能.

我们应该更新到logback吗?

(我的意思是框架不是像SLF4J那样的外观)

java logging log4j logback

148
推荐指数
5
解决办法
10万
查看次数

如何将堆栈跟踪发送到log4j?

假如您执行e.printStackTrace(),则会捕获异常并在标准输出(例如,控制台)上获取以下内容:

java.io.FileNotFoundException: so.txt
        at java.io.FileInputStream.<init>(FileInputStream.java)
        at ExTest.readMyFile(ExTest.java:19)
        at ExTest.main(ExTest.java:7)
Run Code Online (Sandbox Code Playgroud)

现在我想把它发送到一个记录器,比如log4j,以获得以下内容:

31947 [AWT-EventQueue-0] ERROR Java.io.FileNotFoundException: so.txt
32204 [AWT-EventQueue-0] ERROR    at java.io.FileInputStream.<init>(FileInputStream.java)
32235 [AWT-EventQueue-0] ERROR    at ExTest.readMyFile(ExTest.java:19)
32370 [AWT-EventQueue-0] ERROR    at ExTest.main(ExTest.java:7)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

try {
   ...
} catch (Exception e) {
    final String s;
    ...  // <-- What goes here?
    log.error( s );
}
Run Code Online (Sandbox Code Playgroud)

java logging log4j stack-trace

147
推荐指数
6
解决办法
13万
查看次数

Java Logging与Log4J

它仍然是值得log4j的库添加到Java 5的项目只是为了记录让我们说一些例外文件与一些不错的结余设置.或者标准的util.logging工具也可以完成这项工作吗?

你怎么看?

java logging log4j java.util.logging

131
推荐指数
5
解决办法
7万
查看次数