草庐IT

SystemOutToSlf4j

全部标签

java - 我如何在代码中创建一个新的 log4j ConsoleAppender 而不是配置?

我想以编程方式创建一个新的log4jConsoleAppender并将其作为appender添加到记录器-我该如何正确实例化一个-使用以下内容似乎会使log4j提示-我需要使用什么setter来配置它合适吗?//log4jcomplainsof"Nooutputstreamorfilesetfortheappendernamed[null]."logger.addAppender(newConsoleAppender());大概是知道要在ConsoleAppender上设置什么,但我想不通。我假设有一些方法可以获得默认布局。我只想要一个附加到SysOut的标准ConsoleAppend

java - 纯粹在内存中运行 Neo4j,没有任何持久性

我不想保留任何数据,但仍想使用Neo4j的图形遍历和算法功能。在嵌入式数据库中,我配置了cache_type=strong并且在所有写入之后我将事务设置为失败。但是我的写入速度(节点、关系创建速度)很慢,这正在成为我过程中的一个大瓶颈。所以,问题是,Neo4j是否可以在没有任何持久性方面的情况下运行,而只是作为一个纯API?我尝试了JGraphT之类的其他工具,但它们没有像Neo4j提供的那样的遍历机制。 最佳答案 据我所知,Neo4J数据存储和Lucene索引总是写入文件。至少在Linux上,您可以设置一个ramfs文件系统来将文

java - 如何在运行时更改 slf4j 级别?

我使用SLF4j作为我的日志记录框架,由log4j提供支持。我的问题是我正在寻找一种在运行时更改记录器的日志记录级别的方法。我知道slf4j不允许直接通过其自己的API执行此操作,因此,我必须直接访问日志记录提供程序。就个人而言,我发现这是slf4j的一个巨大缺陷。所以现在我的问题是如何通过slf4j以编程方式确定我正在使用哪个提供商?使用slf4j的最大目的是让您成为供应商不可知论者——您可以轻松地在您最喜欢的日志系统之间切换,而无需重新编码任何东西。但是现在,如果我必须直接调用log4j,我就会失去这种能力。至少,我希望能够确定我是否正在使用log4j作为提供程序,如果是,则允许用

java - 使用 slf4j 和 log4j2 动态添加 appender

我想动态创建一个appender并将其添加到记录器中。但是,对于slf4j,这似乎是不可能的。我可以将我的appender添加到log4j记录器,但随后我无法使用slf4jLoggerFactoy检索记录器。我想做什么:我创建一个测试类(不是jUnit测试)并在构造函数中传递一个记录器供测试类使用。测试类的每个实例都需要它自己的记录器和附加器来保存日志,以便稍后在HTML报告中使用。我尝试了什么(为简单起见,我创建了一个jUnit测试):importstaticorg.junit.Assert.assertEquals;importjava.util.LinkedList;import

java - 如何在 3rd 方 jar 中禁用 log4j?

我正在尝试使用JBossweld编写一个javaSEswing应用程序。Weld使用jar中的以下log4j.xml文件使用log4j配置日志记录:我想在我的应用程序中完全禁用日志记录。我试图通过提供一个log4j.properties文件来禁用它,如下所示:log4j.debug=FALSElog4j.rootLogger=OFF,CONSOLE无论我尝试做什么,都无法阻止来自Weld的log4j消息显示在控制台中。我想要做的就是完全禁用日志记录。但是如何呢? 最佳答案 在发布这个问题后不久,我找到了答案。创建一个log4j.xm

java - 在 log4j 中使用系统属性或变量

我想这样做:注意这一行:我试着像这样设置值:publicstaticvoidmain(String[]args){System.setProperty("error.log.path","/test/crm/log/error.log");ApplicationContextcontext=newClassPathXmlApplicationContext("blah.xml");....................}但我没有看到任何效果。是否在调用main之前配置了log4j?方法?还有其他方法吗? 最佳答案 看thisthr

java - 使用 tomcat 6 的 spring webapp 中的 Commons Logging/Log4j 设置问题

我在tomcat6下部署的apringwebapp中的日志记录设置有问题。Web应用程序使用commons-loggingapi,在运行时应该使用log4j。日志文件已创建但仍为空-没有日志条目出现。设置如下:WEB-INF/web.xml:log4jConfigLocation/WEB-INF/log4j.xmlorg.springframework.web.util.Log4jConfigListenerWEB-INF/classes/commons-logging.properties:org.apache.commons.logging.Log=org.apache.commo

java - 我如何正确地使用 Log4j,关闭所有 Appender 并因此关闭文件

我的基于servlet的web应用程序在重新部署时有时无法关闭Log4j日志文件,泄漏到文件描述符泄漏并偶尔导致servlet包含的死于“太多打开的文件”。我有一个ContextListener,我应该在它的contextDestroyed()中放入什么来告诉log4j关闭并释放所有资源?快速浏览javadocs揭示了带有shutdown()方法的Hierachery类。我不知道如何实际获取当前的Hierachery,并且javadoc声明此类内部没有用户可服务的组件:) 最佳答案 试试这个:org.apache.log4j.Log

java - LOG4J:使用自定义附加程序修改记录的消息

出于安全原因,我需要查看我的应用程序中的每条记录消息,并可能在将其转到日志文件之前对其进行修改。我想我可以编写一个自定义附加程序(扩展DailyRollingFileAppender)并覆盖subAppend(LoggingEvent事件)。问题是,LoggingEvent中的消息文本没有setter,消息是私有(private)属性。我可以用我修改过的消息创建一个新的LoggingEvent,但是API不容易复制原始LoggingEvent的其余部分。这一切似乎都是为了阻止在自定义附加程序中干预消息。我能看到的唯一其他选项是修改数百个日志记录语句以调用一个新的全局方法,该方法可以先修

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

有什么方法可以手动指定Log4J2.xlog4j2.xml文件位置(如Log4J1.x中的DOMConfigurator),而不会弄乱类路径和系统属性? 最佳答案 您可以在org.apache.logging.log4j.core.config中使用静态方法#initialize(StringcontextName,ClassLoaderloader,StringconfigLocation)(参见源代码here).配置器。(您可以为类加载器传递null。)请注意,此类不是公共(public)API的一部分,因此您的代码可能会因任何