Tag: log4j

Log4j:每个请求一个日志文件

我们有一个weblogic批处理应用程序,它同时处理来自消费者的多个请求。 我们使用log4j来记录目的。 现在我们为多个请求登录一个日志文件。 调试给定请求的问题与日志在单个文件中的所有请求一样变得冗长乏味。 所以计划是每个请求有一个日志文件。 消费者发送必须执行处理的请求ID。 现在,实际上可能有多个消费者将请求ID发送到我们的应用程序。 所以问题是如何根据请求分割日志文件。 我们无法每次启动和停止生产服务器,因此排除了使用带有日期时间戳或请求ID的重写文件追加器的重点。 这就是下面的文章中解释的: http : //veerasundar.com/blog/2009/08/how-to-create-a-new-log-file-for-each-time-the-application-runs/ 我也试过玩这些替代方案: http://cognitivecache.blogspot.com/2008/08/log4j-writing-to-dynamic-log-file-for.html http://www.mail-archive.com/log4j-user@logging.apache.org/msg05099.html 此方法提供了所需的结果,但如果同时发送多个请求,则无法正常工作。 由于一些并发问题,日志会随处可见。 我期待你们的帮助。 提前致谢….

Log4j 2不再支持log4j.properties文件了吗?

我正在使用log4j 2.0-rc1和log4j.properties文件运行一个示例,但log4j lib始终使用默认配置(日志级别,appender等)运行它。 我也尝试将名称更改为log4j2.properties并且没有任何反应。

Log4j在记录错误时无法发送电子邮件

我在我的应用程序中启用了日志记录,并且我希望通过电子邮件(gmail帐户)发送日志错误。 一世: 设置一个java项目 添加activation.jar,log4j.java和mail.jar(java邮件) 我将这些库添加到项目类路径中 我添加了log4j.properties,我这样配置: log4j.rootLogger = mainlogger,Email,dest log4j.appender.mainlogger = org.apache.log4j.ConsoleAppender log4j.appender.mainlogger.target = System.out log4j.appender.mainlogger.layout = org.apache.log4j.PatternLayout log4j。 appender.mainlogger.layout.ConversionPattern =%d {dd MMM yyyy HH:mm:ss,SSS}%p%-4r [%t]%-5p%c%x – %m%n log4j.appender.dest = org .apache.log4j.FileAppender log4j.appender.dest.File = log.log log4j.appender.dest.layout = org.apache.log4j.PatternLayout log4j.appender.dest.layout.ConversionPattern =%d {dd MMM yyyy HH: mm:ss,SSS}%p%-4r [%t]%-5p%c%x – %m%n 配置SMTP appender log4j.appender.Email=org.apache.log4j.net.SMTPAppender log4j.appender.Email.BufferSize=512 log4j.appender.Email.Threshold=ERROR log4j.appender.Email.SMTPHost=smtp.gmail.com log4j.appender.Email.SMTPUsername=myusername […]

Log4j – 让多个appender写入同一个文件,并始终记录

我有一个log4j appender定义如下: log4j.logger.com.example = DEBUG, filelog log4j.appender.filelog=org.apache.log4j.DailyRollingFileAppender log4j.appender.filelog.File=c:/app.log log4j.appender.filelog.layout=org.apache.log4j.PatternLayout log4j.appender.filelog.layout.ConversionPattern=%d | %m%n log4j.appender.filelog.DatePattern=.dd-MM-yyyy 在我的class上,我得到了记录器: Log logger = LogFactory.getLog(getClass()); 这工作正常。 我希望有一个记录器,它总是记录某些消息(不是错误,而是事务所花费的时间)。 如果我在DEBUG或INFO中写这些,如果更改了日志级别,我将看不到它们。 我想我可以使用写入同一文件的另一个appender来完成此操作。 这可能有两个appender写入同一个文件? 我如何获得我想在同一个类中使用普通调试appender和事务性appender的logger实例? 这些消息不会都在同一个包中,因此我无法将某个包配置为始终记录。 我是否必须让这些appender写入不同的文件,或者我可以在代码中检索它们并具有以下内容: Log alwaysLogger = LogFactory.getLog(ALWAYS); alwaysLogger.debug(“This message will always be written regardless of the level set on the filelog appender”); 更新我可以根据需要写入两个不同的日志文件,但是如何在我的类中获取记录器实例? 我不希望将一个包/类配置为始终使用一个appender而不是另一个包,因为类必须在正常运行期间记录信息/错误消息和事务性“始终”消息。 有没有办法完成我需要的东西,即使它写入两个不同的日志文件?

如何指定Log4J 2.x配置位置?

有没有办法手动指定Log4J 2.x log4j2.xml文件位置(如Log4J 1.x中的DOMConfigurator ),而不会弄乱类路径和系统属性?

如何在log4j.properties中使用系统环境变量?

我添加了系统环境值PROJECT_HOME = C:\ Program Files \ Project 现在我正在尝试使用log4j.properties中的系统环境值,但没有设置它 **log4j.properties** **log4j.appender.LOGFILE.File=”${env.PROJECT_HOME}”/project.log** 你能告诉我如何在log4j.properties中设置系统环境变量吗? 使用log4j-1.2.7版本

log4j日志文件名?

我们有几个并发运行的作业,必须使用相同的log4j配置信息。 他们都使用相同的appender将日志转储到一个文件中。 有没有办法让每个作业动态命名其日志文件,以便它们保持独立? 谢谢 汤姆

将System.out.println重定向到Log4J,同时保留类名信息

我有一些库在我身上调用System.out.println,我想通过log4j或commons日志记录重定向它们。 但特别是我想保留完全限定的类名,以便我知道哪个组件生成了日志。 有一个很好的,有序的方法来实现这一目标吗? 更新:完成此操作后,我在这里发布了代码: http://www.bukisa.com/articles/487009_java-how-to-redirect-stderr-and-stdout-to-commons-logging-with-the-calling-class

设置log4j日志级别

我目前正在开发一个使用log4j的项目。 我正在运行一个测试用例(junit),并希望将日志级别设置为跟踪,以便我可以看到所有值是否正确。 在项目中使用日志记录的类包含如下所示的行: private static final Log LOG = LogFactory.getLog(MatchTaskTest.class); 并使用像这样的方式来进行实际的调试 LOG.trace(“value”); 我之前从未使用过log4j,有没有人知道如何只为测试用例更改日志级别,最好只需在eclipse的运行配置对话框中定义一个参数。

如何在不同的日志文件中记录多个线程?

我有一个JAVA类,它启动具有唯一ID的各种线程。 每个线程都应该登录一个以ID.log命名的唯一日志文件。 因为我只在运行时获取唯一ID,所以我必须以编程方式配置Log4J: // Get the jobID myJobID = aJobID; // Initialize the logger myLogger = Logger.getLogger(myJobID); FileAppender myFileAppender; try { myFileAppender = new FileAppender(new SimpleLayout(), myJobID + “.log”, false); BasicConfigurator.resetConfiguration(); BasicConfigurator.configure(myFileAppender); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } 现在,如果我按顺序启动作业,这可以正常工作 – 但是当我同时启动2个线程(同一类)时,会创建两个日志,但日志会混淆:第二个线程会记录到第一个和第二个日志中。 我怎样才能确保每个实例都是唯一的? 我已经尝试为每个记录器实例提供一个唯一的名称,但它没有改变任何东西。