我正在使用嵌入式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较旧并且有一些类加载器问题)。如果您控制整个应用程序并且可以决定使用哪个日志记录框架,您可以自由选择
我有这个模块用于应用程序COMM的多个部分(在SWTUi端、后端等)。这个模块有一个sendMessage方法,我想在其中添加一个例程来确定调用线程(只是为了在UI中使用它)是SWTUI线程。并警告程序员,他正在尝试从UI线程执行耗时的操作……这很糟糕:)当然,我想通过不在UI模块(来自COMM)上添加任何依赖项来做到这一点。如何确定调用线程是否是SWTUI线程?谢谢,米尔恰 最佳答案 您可以调用Display.getThread()来获取应用程序的当前UI线程。如果您不想依赖SWTUI,那么您将不得不使用反射。例如:publics
我在类中有一个方法非常冗长,这使得日志难以阅读。我想通过仅更改该方法的级别来减少其日志记录,而使同一类中的其他方法保持不变。这可能吗? 最佳答案 您可以更改该类的级别配置,但不能更改类中特定方法的级别配置。做你想做的事情的唯一方法是在该方法中使用不同的记录器,然后在不同的级别配置它。希望这对您有所帮助。 关于java-我可以使用log4j在Java方法中设置日志记录级别吗?,我们在StackOverflow上找到一个类似的问题: https://stackov
将日志写入tomcat/catalina.out的最简单方法是什么?我已经尝试过System.out.print()并且System.err.print()工作正常。我只是想知道除了sysout和syserr之外是否还有更好的选择? 最佳答案 importjava.util.logging.*Logger.getLogger(YourClass.class.getName()).log(Level.WARNING,e.getMessage(),e);Logger.getLogger(YourClass.class.getName()
我需要一个围绕Log4j2的自定义包装器。基本要求是这样的。我的应用程序应该只在任何地方使用MyCustomLogger。而不是Log4j2记录器,所以如果将来需要,我可以轻松删除第三方库,如log4j2等依赖项。我该怎么做?? 最佳答案 Log4j2附带了一个用于生成自定义记录器包装器的工具:参见http://logging.apache.org/log4j/2.0/manual/customloglevels.html#CustomLoggers此工具旨在用于自定义日志级别,但您也可以将其用于您的目的。如果您想完全删除对log4
我正在使用spring4,我想使用springsecurity3来控制我的登录表单。所以我在数据库中有以下表格:用户表:CREATETABLEIFNOTEXISTS`users`(idINT(11)NOTNULLAUTO_INCREMENT,nameVARCHAR(45)NOTNULL,passwordVARCHAR(45)NOTNULL,emailVARCHAR(45)NOTNULL,enabledTINYINTNOTNULLDEFAULT1,PRIMARYKEY(id),UNIQUEKEYuni_name_email_key(name,email))ENGINE=InnoDB;角色
我有一个log4j2.xml文件,如下所示。它正在运行,但它正在获取大量Hibernate和GWT日志文件。我怎样才能排除这些包,或者我怎样才能让我的日志文件只包含来self的包层次结构的日志记录? 最佳答案 删除您的“调试”根记录器。然后添加以下记录器,它将仅记录来自给定“some.dummy.package”的日志所以最后你会有 关于java-过滤掉Log4j2文件中的Hibernate日志,我们在StackOverflow上找到一个类似的问题: http
我的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