是否有轻量级日志框架/服务器可用于在Java中设置远程日志记录?我知道log4j有SocketAppenders但a)我想要一个更开箱即用的库,我可以在其中简单地运行一个日志服务器,b)我希望日志记录调用是完全异步的非阻塞代码和c)日志服务器上基于Web的仪表板/查看器也不错 最佳答案 您可以将log4j与SyslogAppender一起使用,并使用一些tool用于查看系统日志(-ng)。使用log4j附带的异步附加器包装器,可以找到一篇关于它的不错的文章here. 关于logging-
我的团队正在为NetBeans开发一个插件,它使用日志记录到指定的文件。日志系统使用SLF4J+Log4J2;我所知道的唯一配置信息是一个log4j2.xml文件,其中包含插件的日志记录属性,以及以下内容:LoggerContextloggerContext=(LoggerContext)LogManager.getContext(false);loggerContext.reconfigure();(我使用SLF4J和NetBeans的事实与这里无关。)我的问题是,在插件启动时开始记录并在插件退出时停止记录的正确方法是什么?(JVM继续与NetBeans一起运行,因此日志文件不会自动
我正在尝试使用Log4j写入我的文件系统中的本地日志文件。实际上使用了来自不同项目的确切属性文件,只是更改了顶级目录的名称以匹配我的应用程序的名称。不同的项目写入logs.log文件,但这根本不打印任何内容。两个项目都使用相同版本的log4j。pom.xmllog4jlog4j1.2.17在我基于Unix的macOS上,我进入/var/log/并执行了以下操作:sudomkdirmyappchmod777myapp在myapp中,到处都有以下设置:if(log.isDebugEnabled(){log.debug("printsomething");}myapp/src/main/re
我正在尝试使用log4j来处理在Glassfish3下运行的Web服务的日志。我看到的大多数将log4j与Glassfish结合使用的指南都希望我弄乱Glassfish全局设置,我希望避免,因为每个Glassfish实例将部署多个应用程序。有什么方法可以让Glassfish在部署我的Web服务时执行一段代码,这将允许我调用DOMConfigurator并使用我的XML文件设置log4j?感谢您的帮助!编辑:答案是将log4j.xml文件放在WEB-INF/classes中。在我们的例子中,看起来log4j似乎仍未配置,但日志记录实际上仍按预期工作。 最佳答案
它正在输出到控制台。logger.info("你好,世界信息。");//工作得很好...但是以下代码返回“无法找到资源”错误:Loggerlogger=LoggerFactory.getLogger("framework.Utilities._Test");LoggerContextlc=(LoggerContext)LoggerFactory.getILoggerFactory();StatusPrinter.print(lc);我正在使用以下XML:C:\Reports\logBack.log%date%level[%thread]%logger{10}[%file:%line]%
在我的项目中,我使用Logback作为日志工具。我有以下类(class)@ComponentclassTest{@PreDestroypublicvoiddestroy(){try{...}catch(Exceptione){LoggerFactory.getLogger(getClass()).error(e.getLocalizedMessage(),e);}}}现在,我取消部署servlet。发生异常时,Logback不会打印消息和堆栈跟踪。这是因为在Spring调用destroy()之前,Logback正在清理。取消部署servlet时,这是第一行(也是最后一行)日志行:15:
我在使用我的XMLlog4j配置文件中定义的附加程序进行日志记录时遇到问题。我在我的EAR的META-INF文件夹中创建了jboss-deployment-structure.xml但没有成功。jboss-deployment-structure.xml结构是:false我什至尝试编辑我的standalone.conf.bat文件,添加以下行:set"JAVA_OPTS=%JAVA_OPTS%-Dorg.jboss.as.logging.per-deployment=false"我的应用部署是这样的:->MyAppEAR.ear->META-INF->MANIFEST.MF->MyAo
我有一个在Tomcat8上运行的Web应用程序的log4j2配置文件,如下所示/path/to/log/dirsomelogfile.log%d%p%c{1.}[%t]%m%n我看到我的Web应用程序写入了日志文件,但是线程名称的%t模式似乎无法解析,所以我得到了这样的日志语句2017-06-1020:34:51,696DEBUGs.p.n.SomeServlet[%t]somelogmessage注意我得到的是%t而不是线程名称因此,为了解决这个问题,我使用选项启动了Tomcat-Dorg.apache.logging.log4j.simplelog.StatusLogger.lev
我正在尝试使用JUL适配器将JavaUtilLogging委托(delegate)给Log4j2。更准确地说,任何使用JUL生成日志的第三方库都应该委托(delegate)给Log4j2。作为一个简单的练习,我创建了一个独立的应用程序,它使用一个库(我创建这个库是为了测试目的,它使用JUL生成日志)来测试JUL适配器。当我按照描述更改日志管理器时here我可以看到效果。而且效果很好。她的代码:importorg.apache.logging.log4j.LogManager;importcom.ah.loggen.LogGenerator;publicclassTestLogging{
我想登录包含多个类的应用程序。我想在最后有一个.txt日志文件。因此,我制作了一个静态记录器实例,并在一个类中为它制作了一个FileHandler。因为我想要一个文件,所以我在FileHandler中将第二个参数设置为true以便能够在记录期间附加日志文件。publicclassMyLogging{staticLoggerlogger;publicHandlerfileHandler;FormatterplainText;publicMyLogging()throwsIOException{//instancetheloggerlogger=Logger.getLogger(MyLog