草庐IT

java - 在少数特定情况下丢失的日志消息

我正在使用java.util.logging来记录我的应用程序的所有日志。直到最近,我一直在使用没有任何特定配置的日志记录工具。一切都按预期工作,所有日志都在控制台(stderr)中可见现在,我想为我的日志自定义配置。我希望日志显示在控制台上,但我也希望将它们写入文件中。我想出了以下解决方案:publicstaticvoidmain(String[]args){System.setProperty("java.util.logging.config.file","log.config");LoggerdefLogger=Logger.getLogger("fr.def");//alll

java - 我们如何删除日志文件中的额外消息

我有一个简单的日志记录程序,即:publicclassLoggingExample1{publicstaticvoidmain(Stringargs[]){try{LogManagerlm=LogManager.getLogManager();Loggerlogger;FileHandlerfh=newFileHandler("log_test.txt");logger=Logger.getLogger("LoggingExample1");lm.addLogger(logger);logger.setLevel(Level.INFO);fh.setFormatter(newSimpl

java - java Utility类中logger的使用

我只是想知道在编写Java代码时如何在Utility类中使​​用LoggerAPI。我们总是可以使用记录器,我们将使用我们的实用程序类来记录正确的消息,但我想问的是——在实用类中使用Logger是一种好的做法吗? 最佳答案 我假设您正在编写自己的*Util代码。我个人避免在实用程序类中使用Logger,因为日志文件中存在“噪音”。如果您的实用程序类经过良好测试,您可以删除日志语句。请记住只记录日志,不要在日志语句中执行任何业务逻辑(无论是否使用实用程序类)。例如我在我的一个项目中看到了下面的内容,这不是好的做法。log.info("

java - 有没有办法在浏览器中实时查看我的网络应用程序 tomcat 日志?

我正在使用log4j来记录我的数据。我希望能够在浏览器中与我的网络应用程序一起实时查看日志文件。有像Chainsaw这样的独立工具,它们非常好,但它们不能用于在浏览器中实时查看日志的目的。谁能帮我解决这个问题? 最佳答案 一个简单的例子是:Servlet(根据需要更改日志文件的路径):@WebServlet(name="Log",urlPatterns={"/log"})publicclassLogServletextendsHttpServlet{privatestaticfinallongserialVersionUID=750

java - log4j2 多个附加程序,config.xml 中的多个记录器

我正在尝试设置一个log4j2xml配置,但没有得到我想要的结果。我希望我的控制台获得级别信息及更高级别,滚动文件附加程序(标准)获得级别调试及更高级别。然后我想限制控制台appender中的3个类只接收warn及以上。但是,当我添加这些记录器条目时,我的标准appender也停止接收这3个类的信息和调试级别。我应该怎么做才能只限制控制台而不限制标准? 最佳答案 首先,看起来您的配置是针对log4j-1.x,而不是log4j2。如果你想使用log4j2,你需要转换它。(手册中有许多新语法的示例。)最初认为您可能需要使用log4j2T

java - 如何自定义 log4j2 RollingFileAppender?

我们使用log4j1.2.x登录我们的产品,并希望在不久的将来迁移到log4j2.x。我们实现的功能之一是在生成的每个新滚动日志文件中记录系统信息和其他重要参数。我们在log4j1.2.x中的实现方式是我们扩展了log4j的RollingFileAppender类并覆盖了rollOver()方法,下面是实现的部分片段@OverridepublicvoidrollOver(){super.rollOver();//Wearenotmodifyingit'sdefaultfunctionalitybutassoonasrollOverhappensweapplyourlogic////Lo

java - Logback:如何将日志目录从 "tomcat/bin"更改为与应用程序相关?

我想使用slf4j和logback进行日志记录。你可以在下面看到我的logback.xml:module.log%date%level[%thread]%logger{10}[%file:%line]%msg%n问题是:当我将应用程序部署到Tomcat时,日志文件存储在tomcat/bin文件夹中,我想将其存储在myapp文件夹中(tomcat/webapp/myapp).我该怎么做? 最佳答案 好吧,我解决了我的问题,但它不是很好的解决方案(在我看来)。首先,我将日志文件的绝对路径放在.property文件中。例如:logback

java - 是否可以针对不同的日志级别使用不同的模式布局并输出到 SYSTEM_OUT?

对于log4j2,是否可以针对不同的日志级别使用不同的模式布局并输出到SYSTEM_OUT?这是我的log4j2.xml:但是,INFO级消息以“infoMsg”和“debugMsg”模式显示。2015-12-2410:51:56.176Log4jisready.[INFO]2015-12-2410:51:56.176com.myftpserver.MyFtpServer.(MyFtpServer.java:65)-Log4jisready.2015-12-2410:51:56.176Configurationfileisloaded[INFO]2015-12-2410:51:56.1

java - Log4j2 通配符记录器名称

我正在使用log4j在我的一个应用程序上做一些日志记录。我的配置中的记录器看起来像这样。基本上,我想要来self编写的代码的“信息”级消息,但我希望外部库仅在出现警告或更严重的情况时才记录。这正如我所料的那样工作,但是“org.eclipse.jetty”下有很多类有没有可能做这样的事情?也就是说,我希望整个包中的所有内容都只显示warn/error/fatal。上面的方法我都试过了,没有效果。是否有“通配符”或我可以用来为包中的所有内容设置记录器的东西? 最佳答案 对于基于属性的配置,您只需采用不带任何通配符的包名称。也应该使用X

java - 使用 log4j 进行日志记录的嵌入式 Tomcat

我正在使用嵌入式Tomcat8.5.4,即org.apache.tomcat.embedtomcat-embed-core8.5.4实现工作完美(Tomcat工作得很好),唯一困扰我的是嵌入式Tomcat登录System.out。在我的应用程序内部,我使用log4j进行日志记录,因此这导致以下日志记录混合(而不是将Tomcat记录到任何文件):...2017-07-3017:57:54DEBUGEmbeddedTomcat:136-Bindingservlet'sample'topath'/sample/*'.Jul30,20175:57:54PMorg.apache.coyote.A