Tag: logging

Log4j config – 不同的日志到不同的文件

对于一些人来说,这可能是一个非常简单的问题,但我个人认为Log4j配置是噩梦般困难,并且学习进行脑部手术可能不那么具有挑战性。 我正在尝试将多个记录器记录到不同的文件中。 这是我在log4j.properties文件中的内容: # Root logger option log4j.rootLogger=INFO, file, admin # Direct log messages to a log file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=/home/nick/logging/file.log log4j.appender.file.MaxFileSize=1MB log4j.appender.file.MaxBackupIndex=1 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} – %m%n log4j.appender.admin=org.apache.log4j.RollingFileAppender log4j.appender.admin.File=/home/nick/logging/admin.log log4j.appender.admin.MaxFileSize=1MB log4j.appender.admin.MaxBackupIndex=1 log4j.appender.admin.layout=org.apache.log4j.PatternLayout log4j.appender.admin.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} – %m%n 这是我用来测试配置的(非常简单的)Java应用程序: public static void main(String[] args) throws Exception { Properties resource = new Properties(); InputStream […]

自定义注释作为方法记录的拦截器

Java大师, 我是一个很新的annotations ,并没有搜索过这么多,所以请忍受我… 我想实现一个Custom Annotation ,它将intercept一个方法调用; 从非常基本的东西开始,它可以只打印方法名称和参数,以便我可以避免使用logger语句。 像这样的示例调用: public MyAppObject findMyAppObjectById(Long id) throws MyCustomException { log.debug(“in findMyAppObjectById(” + id + “)”); //…. } 可以转换成: @LogMethodCall(Logger.DEBUG) public MyAppObject findMyAppObjectById(Long id) throws MyCustomException { //…. } 我可以得到一些关于此的提示吗?

从IntelliJ Ultimate外部运行时,Tomcat的“服务器日志”在哪里?

在macOS Sierra上从IntelliJ Ultimate 2017.2外部在Tomcat 8.5上运行我的Vaadin应用程序时,收到一条错误消息: 神器时计-ui:战争爆炸:神器部署期间出错。 有关详细信息,请参阅服 ➠这个’服务器日志’在哪里? 当我查看apache-tomcat-8.5.20 > logs ,该文件夹为空。 实际上,我找不到在apache-tomcat-8.5.20部署我的应用程序的任何痕迹。 ➠还有一些其他地方IntelliJ + Tomcat放置我的应用程序和服务器日志? “日志”对话框的屏幕截图”>

SimpleFormatter忽略java.util.logging.SimpleFormatter.format属性

我在GlassFish 4上使用java.util.logging。 我通过定义System属性来定义我自己的类来初始化LogManager : -Djava.util.logging.config.class 。 我的类加载logging.properties文件,将其与其他属性文件合并,并进行一些自定义替换。 以下是我的logging.properties文件的相关部分: java.util.logging.FileHandler.pattern=C:/Work/server/glassfish/domains/domain1/logs/JMSFileHandler%g.log java.util.logging.FileHandler.limit=2000000 java.util.logging.FileHandler.count=20 java.util.logging.FileHandler.append=true java.util.logging.FileHandler.level=ALL java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter java.util.logging.SimpleFormatter.format=%1$tY:%1$tm:%1$td %1$tH:%1$tM:%1$tS|%4$s: %2$s%n%5$s%n%6$s%n 我正在使用标准的FileHandler并将其配置为使用SimpleFormatter作为格式化程序。 但java.util.logging.SimpleFormatter.format字符串被完全忽略。 相反,SimpleFormatter使用其默认格式。 我哪里做错了?

JSch记录器 – 我在哪里可以配置级别

如何配置JSch记录器的级别? 是否可以通过XML配置Log4J?

Log4j2:动态创建多个日志的日志文件

我目前正在创建一个可以拥有模块的系统(将它们视为插件),其中每个模块都可以拥有自己的专用日志。 我想使用log4j2项目进行日志记录,但我似乎在使用文件appender时遇到了一些问题。 主项目(模块加载器和整个事物的“核心”)应该有自己的日志文件,而模块应该有自己的(如mod_XXXXXXXX.log )。 通过阅读有关appender的文档,我发现了FileAppender类,我打算使用它。 直到我发现我不能简单地将appender添加到LogManager.getLog()创建的默认记录器中。 LogManager返回的记录器是与Logger接口不同的记录Logger 。 即使搜索没有给我任何近乎解决方案,我发现只是xml配置中的预定义文件日志 – 这不是我想要的。 谢谢你的阅读; 即使是最轻微的线索也欢迎:)

JDBC记录到文件

我需要将我项目中的Oracle数据库的所有查询记录到日志文件中。 实现这一目标的好方法是什么? 一些样品用法将不胜感激。 我用jdbcdslog查看了SLF4J ,但我不知道如何用它来登录文件。 此外,我需要“过滤”一些日志(因为我不需要知道什么时候调用一些getxxxx方法) 最好,我更喜欢使用java.util.logging但这不是必需的。 谢谢。 ** 更新 ** 我发现了这篇Oracle文章 ,但它并没有真正告诉我如何以编程方式执行相同的操作。

使用log4j通过SMTPAppender发送电子邮件报告

我正在尝试使用log4j发送包含来自后台进程的日志记录语句的可通过电子邮件发送的报告。 我想为每个进程运行发送一封电子邮件,而不是每封邮件语句都有一封电子邮件。 我查看了SMTPAppender ,但是在进程完成时没有看到手动发送报告的方法。 我相信TriggeringEventEvaluator可能是关键,但我遇到的一个问题是如何获取TriggeringEventEvaluator实例的句柄。 我坚持使用log4j 1.2.14并且在1.2.15中引入了SMTPAppender.getEvaluator()方法。 有什么想法吗? 我是否走在正确的轨道上? SMTPAppender.close()方法是否在这里发挥作用? 我希望能够做到这一点: log.info(message1); log.info(message2); log.info(message3); log.sendMail(); 在考虑了这个之后,我想我需要澄清一下我希望完成的事情。 我正在尝试捕获运行石英作业的日志记录,并将生成的日志作为电子邮件发送。 quartz工作将一堆服务方法调用到各种服务中。 我想要包括那些服务方法执行的任何日志记录以及石英作业本身的日志记录。 我以为我可以做类似以下的事情来捕获所有日志记录,但它不起作用。 // at the beginning of quartz job Logger logger = Logger.getRootLogger(); StringWriter sw = new StringWriter(); WriterAppender wa = new WriterAppender(new SimpleLayout(), sw); logger.addAppender(wa); // at the end of the quartz job String report = […]

LOG4J:使用自定义appender修改记录的消息

出于安全原因,我需要查看我的应用程序中的每条记录消息,并可能在它转到日志文件之前对其进行修改。 我想我可以写一个自定义appender(扩展DailyRollingFileAppender)并覆盖subAppend(LoggingEvent事件)。 问题是,LoggingEvent中没有消息文本的setter,消息是私有属性。 我可以使用修改后的消息创建一个新的LoggingEvent,但API不能轻松复制原始LoggingEvent的其余部分。 这一切似乎都旨在阻止在自定义appender中插入消息。 我能看到的唯一另一个选项是修改数百个日志语句来调用一个新的全局方法,该方法可以先修改文本然后进行Log4J调用。 我宁愿不! 有没有其他人需要修改自定义appender中记录的消息?

每次使用log4j运行一个日志文件

如何将log4j.properties配置为每次运行应用程序时只有一个日志文件。 我已经读过你应该在文件名中使用时间戳,但随着时间的推移,每次运行会创建许多文件。 我尝试过DailyRollingFileAppender和RollingFileAppender但是找不到一种方法来为每次运行配置一个日志。 不应将日志分成多个日志,也不应截断日志,应保留旧运行的文件。 每个类都有一个静态的org.slf4j.Logger,它有自己的类名: private static final Logger log = LoggerFactory.getLogger(Foo.class); 这是我当前的log4j.properties log4j.rootLogger=error, RootAppender, RootErrorAppender #log4j.logger.com.example=info, qspaBackendAppender, stderr log4j.logger.com.example=info, qspaBackendAppender log4j.additivity.com.example=true #log4j.logger.com.example.util=trace, qspaBackendAppender, stderr #log4j.additivity.com.example.util=true log4j.appender.qspaBackendAppender=org.apache.log4j.DailyRollingFileAppender log4j.appender.qspaBackendAppender.file=logs/qspaBackend.log log4j.appender.qspaBackendAppender.layout=org.apache.log4j.PatternLayout log4j.appender.qspaBackendAppender.layout.ConversionPattern= %-5p : %C{1} %c{2} : %m%n log4j.appender.stderr=org.apache.log4j.ConsoleAppender log4j.appender.stderr.Target=System.err log4j.appender.stderr.layout=org.apache.log4j.PatternLayout log4j.appender.stderr.layout.ConversionPattern=%-5p %c{1}:%L – %m%n log4j.appender.RootAppender=org.apache.log4j.RollingFileAppender log4j.appender.RootAppender.file=logs/root.log log4j.appender.RootAppender.layout=org.apache.log4j.PatternLayout log4j.appender.RootAppender.layout.ConversionPattern= %-5p : %C{1} %c{2} : %m%n log4j.appender.RootErrorAppender=org.apache.log4j.RollingFileAppender log4j.appender.RootErrorAppender.file=logs/rootError.log […]