我正在使用嵌入式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
当你写作时logger.error("message",exception);log4j生成消息和完整的堆栈跟踪:Aug906:26:1310.175.60.14myPrefix:[error][TP-Processor114][my.class.Name]message:exceptionatfatherOfExceptionatfatherof_fatherOfExceptionatfatherof_fatherof_fatherOfException...我的转换模式是log4j.appender.syslog.layout.ConversionPattern=myPrefix:
它们是替代品、依赖项、API还是彼此的实现?它们为什么存在? 最佳答案 啊,Java中的日志记录框架。您的问题混合了2种不同类型的库:log4j和JDK日志记录是处理日志记录的库CommonsLogging和SLF4J是日志外观:您仍然需要一个真正的日志实现(比如log4j)如果您正在编写一个将在其他人的系统中使用的库,那么您应该使用日志外观,因为您不知道他们将使用哪个日志框架。在这种情况下使用SLF4J(CommonsLogging较旧并且有一些类加载器问题)。如果您控制整个应用程序并且可以决定使用哪个日志记录框架,您可以自由选择
我在类中有一个方法非常冗长,这使得日志难以阅读。我想通过仅更改该方法的级别来减少其日志记录,而使同一类中的其他方法保持不变。这可能吗? 最佳答案 您可以更改该类的级别配置,但不能更改类中特定方法的级别配置。做你想做的事情的唯一方法是在该方法中使用不同的记录器,然后在不同的级别配置它。希望这对您有所帮助。 关于java-我可以使用log4j在Java方法中设置日志记录级别吗?,我们在StackOverflow上找到一个类似的问题: https://stackov
我需要一个围绕Log4j2的自定义包装器。基本要求是这样的。我的应用程序应该只在任何地方使用MyCustomLogger。而不是Log4j2记录器,所以如果将来需要,我可以轻松删除第三方库,如log4j2等依赖项。我该怎么做?? 最佳答案 Log4j2附带了一个用于生成自定义记录器包装器的工具:参见http://logging.apache.org/log4j/2.0/manual/customloglevels.html#CustomLoggers此工具旨在用于自定义日志级别,但您也可以将其用于您的目的。如果您想完全删除对log4
我有一个log4j2.xml文件,如下所示。它正在运行,但它正在获取大量Hibernate和GWT日志文件。我怎样才能排除这些包,或者我怎样才能让我的日志文件只包含来self的包层次结构的日志记录? 最佳答案 删除您的“调试”根记录器。然后添加以下记录器,它将仅记录来自给定“some.dummy.package”的日志所以最后你会有 关于java-过滤掉Log4j2文件中的Hibernate日志,我们在StackOverflow上找到一个类似的问题: http
我正在学习Java,我发现有许多标准化的功能:日志记录(使用SLF4J)持久性(使用JPA)REST(使用JAX-RS)SOAP(使用JAX-WS)等等让我们以Sl4j为例:要将其与log4j一起正确使用,我们必须导入sl4japi、sl4j/log4j桥和log4j实现。问题:在我的类里面,我只与Slf4jAPI进行通信。我的应用程序如何知道log4j实现?有人可以解释幕后发生的事情吗?问候 最佳答案 OP提出了一个关于在某些不同情况下如何注入(inject)实现的一般性问题。记录如许多答案所述,SLF4J提供接口(interfa
我的build.gradle文件中有以下依赖项。compile'org.slf4j:slf4j-api:1.7.25'compilegroup:'org.apache.logging.log4j',name:'log4j-core',version:'2.11.1'compilegroup:'org.apache.logging.log4j',name:'log4j-api',version:'2.11.1'在运行我的单元测试时,会显示以下日志。excludepatterns:SLF4J:ClasspathcontainsmultipleSLF4Jbindings.SLF4J:Foun
在log4j中,有没有办法让logger.error("")和logger.debug("")包含不同的输出布局?我希望错误包含方法名称和行号,这两者都会降低应用程序的性能。编辑:添加apache-log4j-extras后,以下配置文件有效。此代码用于测试//goestoerrors.txtlog.error("error");//goestowarnings.txtlog.warn("warn"); 最佳答案 在您的log4j.xml配置中,您可以创建两个附加程序,每个附加程序使用一个LevelMatchFilter每个都有一个
我希望从同一类中生成的特定消息被单独记录。那么,如何在同一类中创建两种不同类型的记录器。目前,属性文件看起来像log4j.rootCategory=DEBUG,O#Stdoutlog4j.appender.O=org.apache.log4j.ConsoleAppenderlog4j.appender.O.layout=org.apache.log4j.PatternLayoutlog4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x-%C.%M(%F:%L)-%m%n#Filelog4j.appende