jjzjj

java.lang.NoClassDefFoundError : Lorg/apache/logging/log4j/Logger; but the artifact exists 错误

我正在使用Tomcat部署javawebapp。简而言之,我得到了一个很长的堆栈跟踪:GRAVE:Achildcontainerfailedduringstartjava.util.concurrent.ExecutionException:org.apache.catalina.LifecycleException:Failedtostartcomponent[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/new-webapp]][...]Causedby:java.lang.NoClassDefF

java - 在类之间传递记录器

我的项目中有两个类,我想将记录器从主类传递到子类,并让子类使用父类的记录器设置。子类是一个单独的通用类(即不依赖于主类),如果没有提供,则必须能够创建自己的记录器。主类创建一个记录器,添加一个控制台处理程序、文件处理程序和日志格式化程序,我希望子类能够为其日志消息临时覆盖日志格式化程序,然后当主类恢复时,恢复为它的日志格式化程序。我试图将记录器添加到子类中,或者在需要时创建一个新记录器,但是我在屏幕和日志文件中收到多条消息(它似乎是将处理程序附加到主类而不是而不是覆盖它)。我该怎么做? 最佳答案 我假设您正在使用java.util.

java - 解决 Java Checkstyle 错误 : Name 'logger' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'

使用EclipseCheckstyle插件我看到这个错误:Name'logger'mustmatchpattern'^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.我通过更改解决了这个错误:privatestaticfinalLoggerlogger=Logger.getLogger(someClass.class);到privatestaticfinalLoggerLOGGER=Logger.getLogger(someClass.class);为什么这是一个checkstyle警告? 最佳答案 因为该字段被标记为f

Java Logger 不向控制台打印任何内容

我刚刚开始学习Java中的Logger;但是,我不明白它是如何工作的。我在类声明之后有这段代码:privatestaticfinalLoggerLOGGER=Logger.getLogger(MyClass.class.getName());然后在我的方法中我这样使用它(示例):LOGGER.log(Level.FINE,"Testing");LOGGER.info("Moretesting...");...}catch(Exceptione){LOGGER.log(Level.SEVERE,e.toString(),e);}但是没有任何内容打印到控制台。它是保存在某个文件中还是我只是

java - 以编程方式配置 LogBack DBAppender

我试图让LogBackDBAppender通过编程配置工作,但似乎无法使其正常运行。LoggerContextlc=(LoggerContext)LoggerFactory.getILoggerFactory();DBAppenderdbAppender=newDBAppender();dbAppender.setContext(lc);DriverManagerConnectionSourceconnectionSource=newDriverManagerConnectionSource();connectionSource.setDriverClass("com.mysql.jd

Java 日志记录 - 包装器?

我从一个新项目开始,并做了一些关于日志记录的考虑。我总是使用这样的模式,其中每个完成日志记录的类都有自己的静态记录器:privatestaticfinalLoggerlogger=Logger.getLogger(LoggingInterceptor.class);我不太喜欢这种方法,因为我必须将这一行复制到我要记录内容的每个类中。我考虑过使用Android方法,其中有Log类及其静态方法来记录。我开始在互联网上搜索其他人所做的类似方法,但没有找到任何东西。所以我的问题是:这种方法有什么缺点?我想不出任何优点,因为它遵循DRY模式。可以像在Android中一样使用“标签”处理不同的类别

不需要在每个类上都声明 LOGGER 的 Java 日志记录框架

我尝试了以下记录器Java日志记录APILog4jslf4j所有这些都需要类级别的LOGGER声明,如下所示privatefinalstaticjava.util.logging.Logger.LoggerLOGGER=java.util.logging.Logger.Logger.getLogger(MyClass.class.getName());privatefinalLoggerslf4jLogger=LoggerFactory.getLogger(SLF4JHello.class);privatefinalstaticLoggerlog4jLogger=Logger.getL

java - 在 log4j 的内存 'list appender' 中

log4j是否有一个仅存储日志记录事件列表的附加程序(用于单元测试,以验证没有写入错误日志)? 最佳答案 有一个MemoryAppender,但它不是标准log4j库的一部分。您可以轻松编写自己的代码,但如果您仅将它们用于单元测试,我可能会模拟Logger并断言没有调用它。覆盖目标类中的getLogger()方法或直接在类型上设置模拟Logger。使用Jmock(内存中的例子,如有错误请见谅):publicvoidtestDoFoo(){Mockerymockery=newMockery();LoggermockLogger=moc

java - Logback 用法和打印列表

我开始使用logback,我想知道是否有更好的方法来做某事。我有这段代码:publicclassClassA{privateListl;privateLoggerlogger;publicClassA(){this.logger=LoggerFactory.getLogger(this.getClass().getName());}....publicListmethod(){this.logger.debug("method()");Listnames;try{names=otherClass.getNames();}catch(Exceptione){Stringmsg="Erro

java - 日志管理器和垃圾收集器

在LogManager的getLogger()方法的描述中,是这样写的:"(...)如果没有对Logger的强引用,与String名称关联的Logger可能随时被垃圾回收。此方法的调用者必须检查返回值是否为null,以便正确处理记录器已被垃圾收集的情况。”GC怎么可能删除Logger,因为LogManager必须保留对所有Logger的所有引用才能解析Logger的名称?这不是有点奇怪吗,JavaAPI允许这样一种情况,即在我的应用程序开始时我创建并设置了我的记录器但忘记保留引用,然后如果我使用Logger.getLogger('someName')我将获得我设置的新的、默认的Logg