当前位置: 首页 > 知识库问答 >
问题:

logger而不是根据运行时环境打印在日志中的类名

阴阳
2023-03-14
03 Dec 15 09:45:39, DEBUG  my.fancy.app.filters.TicketValidationFilter:doFilter:30 Ticket was verified with data: uniqueID=gfd, idnumber=sdf, mid=11246986.
03 Dec 15 09:45:39, DEBUG  my.fancy.app.MyServlet:doGet:30 Request for secret data with uniqueId=gfd
03 Dec 15 09:45:39, WARN   my.fancy.app.MyServlet:doGet:36 Could not retrieve SecretData with uniqueId=gfd

然而,当我将相同的代码部署到开发环境时(它可能不那么干净...)我得到:

03 dec 15 10:45:22, DEBUG  org.jboss.logging.Logger:debug:228 Ticket was verified with data: uniqueID=sdg, idnumber=sdf, mid=11738149.
03 dec 15 10:45:22, DEBUG  org.jboss.logging.Logger:debug:228 Request for secret data with uniqueId=sdg
03 dec 15 10:45:22, WARN   org.jboss.logging.Logger:warn:352 Could not retrieve SecretData with uniqueId=sdg

我比较了两种环境中的jboss-log4j.xml,它们是相同的。我还检查了启动标志,以查看是否设置了日志提供程序,但这两种环境中都没有设置日志提供程序。

接下来我该看哪里?

记录器声明:

导入org.slf4j.logger;导入org.slf4j.loggerFactory;...公共类MyServlet扩展了HttpServlet{private Logger log=loggerFactory.getLogger(MyServlet.class.getName());...log.debug(“request for secret data with uniqueid={}”,secretdatavo.getUniqueid());...}

在pom.xml中有:

启动JBoss时显示一个错误:

2015-12-07 16:16:50,127 ERROR[STDERR]log4j:ERROR“org.jboss.logging.appender.fileappender”对象不能分配给“org.apache.log4j.appender”变量。2015-12-07 16:16:50,127 ERROR[STDERR]log4j:ERROR类“org.apache.log4j.appender”由2015-12-07 16:16:50,127 ERROR[STDERR]log4j:ERROR[baseclassloader@14a33aa{vfszip://my-jboss-root/jboss/server/default/deploy/fancyapp.ear/fancyapp-web.war/}]加载,而类型为2015-12-07 16:16:50,127 ERROR[STDERR]log4j:ERROR“LClassLoader@15b0afd]。2015-12-07 16:16:50,127错误[STDERR]log4j:错误无法实例化名为“File”的追加程序。

其中fancyapp-web.war是加载slf4j-log4j12的文件。我以前看到过这个错误,但没有提到它,因为它出现在本地(docker)和开发环境中(甚至在prod中)...

共有1个答案

钦德佑
2023-03-14

请尝试使用loggerfactory.getlogger(MyServlet.class),如下所示:http://www.slf4j.org/api/org/slf4j/loggerfactory.html#getlogger%28java.lang.class%29

如果clazz参数与SLF4J内部计算的调用方名称不同,则将打印记录器名称不匹配警告,但仅当SLF4J.DetectLoggerNameMismMatch系统属性设置为true时。默认情况下,不设置此属性,即使在记录器名称不匹配的情况下,也不会打印任何警告。

还要在log4j.xml中设置debug=“true”并观察log4j初始化。

 类似资料:
  • 当我运行这段代码时,没有任何东西被打印到控制台。我应该如何使用logp?

  • 问题内容: 我将Log4j与结合使用,以基于大小创建日志轮换。 如何配置它以便在轮换之前一定 时间 记录到每个文件? 例如,使每个日志文件包含一个小时的日志,并在每个小时的顶部轮换显示? 我使用对象(而不是文件)在Java中以编程方式配置Log4j 问题答案: 您可能要使用DailyRollingFileAppender。例如,要每小时滚动一次,可以使用DatePattern为。对于log4j.p

  • 本文向大家介绍React根据不同的环境打包不同的域名?相关面试题,主要包含被问及React根据不同的环境打包不同的域名?时的应答技巧和注意事项,需要的朋友参考一下 如果是CRA的项目的话,可以使用 文件来区分不同的环境; 比如生产环境域名,开发环境域名, 则可以分别设置和, 然后在程序中使用来获取基础路径,此时打包的时候会根据不同的环境打包不同的域名

  • 谢谢你在这方面的帮助。

  • 我在记录调用类的类名时遇到问题。我在logback中编写了日志实用程序类。出于性能原因,我使用单例模式创建了记录器实用程序。但是,当我从其他类调用日志语句时,我会打印实用工具的类名,而不是调用类。 测试课就像 我得到的输出如下打印而不是LogUtilTest,我需要帮助记录我的调用类名 2014-04-14 16:47:21信息[main]MyModule[LogUtil.info:42]类名[c

  • AST或字节码的解释过程只是在代码过程层面,不足以成为一个完整的运行,因为程序计算是需要数据和存储空间的,光有代码跑不起来,需要运行时环境,至少要有数据,实际情况中还需要一些其他信息。为讨论方便,在解释器中将运行时环境抽象为前述的env对象,通过一些接口来实现存取,这里先只讨论单执行序列,不考虑并发 env在前面的分析中总共就涉及了三个接口,get,set和set_exception(当然还应该有