我在网络逻辑中部署了一个耳朵,log4j2.xml logPath 设置为
<Property name="logPath">some_path_1<Property>
一个记录器定义为
<Logger name="a.b.c.d" level="INFO" />
在这个ear/lib中有一个包含log4j2.xml的jar,logPath属性定义为
<Property name="logPath">some_path_2<Property>
和一个包装结构非常相似的记录器
<Logger name="a.b.c" level="INFO" />
这两个log4j2.xml也被配置为具有不同的日志文件名。但是两者的日志都在路径中some_path_2并且在该jar中定义了文件名
如何确保两个日志记录输出按照定义单独发生?
我的耳朵结构就像
ear
|--lib
|--|--abc.jar
|--|--|--log4j2.xml //the one thats getting loaded
|--xyz.war
|--|--WEB-INF
|--|--|--classes
|--|--|--|--log4j2.xml // the one I want
Edit1:我在包含war的web.xml中添加了以下内容,但是没有帮助
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j2.xml</param-value>
</context-param>
伊迪丝2:我也试过,发现这是间歇性的
ear
|--lib
|--|--abc.jar
|--|--|--log4j2.xml //the one thats getting loaded
|--|--xyz.jar
|--|--|--log4j2.xml //the one I want.. works but not always.Does classloader loads the jars alphabetically?
|--xyz.war
|--|--WEB-INF
|--|--|--classes
|--|--|--|--log4j2.xml // the one I want
您能否从 jar/war 中删除 XML,并在耳朵级别仅使用一个 xml 文件,该文件包含日志记录路径/属性的详细信息。您可以尝试使用特定配置文件在代码中重新配置 log4j2。
您还可以动态写入单独的日志文件,但我个人还没有尝试过,因此我无法对此进行更多指导。
正如您可能已经知道的那样,您的问题是只加载了一个配置文件,而哪个文件取决于类加载器。所以你不应该依赖它。
你的问题只有两种可能的解决方案,但是今天我没有时间为你解决这个问题——对不起。你必须删除或重命名abc.jar中的配置文件
>
从 abc 中删除 log4j2.xml.jar 在 ANT/MAVEN/GRADLE 或其他什么地方使用你的构建脚本来做。将配置文件的间隙部分复制粘贴到配置文件中。
在abc.jar中重命名log4j2.xml。使用ANT/MAVEN/GRADLE或其他格式的构建脚本执行此操作。现在,您可以在html" target="_blank">log4j2.xml中包含整个配置文件。这称为CompositeConfiguration。
我希望这个小建议对你有所帮助。祝你好运
Log4j只使用log4j引导程序首先找到的配置文件初始化一次。所有其他(可能存在的)配置文件将不被考虑。在适当的教程中了解更多关于log4j自动配置的优先权。
我已经在spring boot Application.properties中配置了日志路径属性。 在application.properties中的此属性中。它使用日志文件名,并在tomcat日志文件目录中创建一个新的日志文件。我检查了我的系统属性,它设置了LOG_FILE和LOG_PATH属性。我使用了1.3.6版本的spring Boot。任何与此相关的已知问题。我读过一期,似乎很久以前就修
Spring boot附带了几个默认的日志框架配置,包括Log4j2。虽然Spring boot参考手册中有关于日志记录的详细文档,但它没有提到默认日志模式的具体配置方式和位置,这使得重写此模式变得很困难。 问题是Spring Boot在哪里为Log4j2配置默认的日志模式? 到目前为止,我已经查看了Spring Boot的以下位置:
我想在我的应用程序中使用SLF4J+logback用于两个目的--日志和审计。 14:41:57.978[main]信息AUDIT_LOGGER-110欢迎使用main 如何确保审核消息在审核记录器下只出现一次?
问题内容: 我正在考虑将Redis用于Web应用程序日志记录目的。我用谷歌搜索,有人将日志转储到Redis队列/列表中,然后将计划的工作人员转储到磁盘中。 http://nosql.mypopescu.com/post/8652869828/another-redis-use-case- centralized-logging 我希望寻求理解,为什么不直接使用Redis持久化到磁盘?如果我分配了一
logging 模块自 2.3 版以来一直是 Python 标准库的一部分。在 PEP 282 中有对它的简洁描述。除了 基础日志教程 之外,这些文档是非常难以阅读的。 日志记录一般有两个目的: 诊断日志 记录与应用程序操作相关的日志。例如,当用户遇到程序报错时, 可通过搜索诊断日志以获得上下文信息。 审计日志 为商业分析而记录的日志。从审计日志中,可提取用户的交易信息, 并结合其他用户资料构成用
我想按照这里的描述设置用于日志记录的Jetty-http://www.eclipse.org/jetty/documentation/current/configuring-jetty-request-logs.html 但上线过程以错误结束: 我的码头网。WEB-INF中的xml具有以下配置: 我做错了什么? 我用下一个命令编译并运行WAR文件:
主要内容:修改日志管理器配置每个初学者都很熟悉在有问题的代码中使用 System.out.println 方法在控制台打印消息,来帮助观察程序运行的操作过程。如果你使用 System.out.println 方法,一旦发现问题的根源,就要将这些语句从代码中删去。如果接下来又出现了问题,就需要再插入几个调用 System.out.println 方法的语句,如此反复,增加了工作量。 日志用来记录程序的运行轨迹,方便查找关键信
提示 你可以在 GitHub 上查阅当前文章涉及的代码样例。 ASP.NET Core 应用程序 一旦使用了 AddDbContext 或 AddDbContextPool ,EF Core 就会自动集成 ASP.NET Core 的日志记录机制。因此,当使用 ASP.NET Core 的时候,日志记录的配置与 ASP.NET Core 帮助文档 中所描述的是一致的。 其他应用程序 EF Core