2012-03-26 40 views
3

对于java来说我是新手,我知道Java有Log4J,logback等用于记录目的。我的问题更多的是围绕在应用程序中有多少个日志文件。它应该是每个线程,每组线程,进程,异常等等。在我们的应用程序中,可能存在大量线程,并且正在考虑每个线程具有日志文件的缺点。是否有登录具有大量线程的应用程序的最佳做法。如何为Java应用程序设计日志结构

在此先感谢!

+1

你为什么要登录第一个地方? – UmNyobe 2012-03-26 05:26:28

回答

3

1日志消息 - 说它的SystemOut.log

1日志堆栈跟踪 - 称它为SystemErr.log

1日志痕迹 - 说它trace.log的

1日志本土标准输出 - 说它nativeStdOut.log

1日志本地标准错误 - 说它nativeStdErr.log

有一个配置面板设置:

maxSize 
maxCount 

当日志达到最大大小时,开始将它们滚动到maxCount并将时间戳附加到滚动文件名。

0

我认为很好的解决方案是将您的线程命名并将日志与发生日志的线程名称一起写入。由于这一点,你将能够分别为每个线程分析日志或一起分析所有日志。

0

通常,每个应用程序(进程)有一个日志文件 - 很少用于Thread,从不是Exception。有时候,这个日志文件被分成不同的日志级别:调试一个桶中的消息,另一个中的信息,三分之一的警告/错误。通过查看警告和更关键的文件,可以轻松查看错误。

log4j有一个配置文件,您可以使用不同的标准将某些消息路由到某些文件。下面是log4j属性的样本文件:

# default is WARN and above going to the appender "logfile" and STDOUT 
log4j.rootLogger=WARN, logfile, stdout 
# write to ui.log for a day and then move to .yyyy-MM-dd suffix 
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.logfile.File=ui.log 
log4j.appender.logfile.Append=true 
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd 
# but we log information message from classes in the package com.mprew.be 
log4j.logger.com.mprew.be=INFO 

log4j的,和自定义记录程序,每次装饰用Class名称,优先级,日期/时间等。例如:

# date  time  priority Class-name Log message 
2012-03-26 00:55:39,545 [INFO] CmsClientTask Content is up-to-date 

通常情况下,异常会写成多行,因此您可以获取整个堆栈跟踪。

2012-03-26 01:55:35,777 [INFO] ExceptionInterceptor Reporting problem to customer 
    org.springframework.NoSuchRequestException: No request handling method 
    at com.ui.base.BaseController.invokeNamedHandler(BaseController.java:240) 
    at com.ui.base.BaseController.handleRequestInternal(BaseController.java:100) 
    at com.ui.base.CoreServices.handleRequest(CoreServicesController.java:147) 
    ... 

在我们的分布式系统中,我们从路由所有系统的所有日志到编写调试,信息,预警日志2台服务器。除了日期/时间,类名,优先级和消息之外,日志消息还具有主机名和特定的日志标记,以便我们可以轻松识别问题的类别。以下是在一条线上:

2012-03-26 00:00:00.045 UTC INFO FE8 TrayController TRAY_CLIENT_LOOKUP 
    message=created unknown client with partner STW9 

然后我们可以很容易地grep的具体问题。

希望这会有所帮助。