环境 | windows |
服务器 | weblogic 12C |
日志 | log4j或log4j2 |
叙述:
项目打印日志,要求需要用到log4j或log4j2,服务器用weblogic 12c,同时实现动态打印(使用环境变量,不在log4j.properties文件中写死路径)
当项目在tomcat运行的时候log4j的日志打印很正常,但是部署到weblogic时发现日志文件可以打印出来,却没有内容。
解决日志文件没有内容问题
查阅资料后发现,因为weblogic已经自带了slf4j的模块,与应用中的logback冲突。
原文:https://blog.csdn.net/qq_37181774/article/details/79377958
所以在项目的WEB-INF文件夹下添加【weblogic.xml】,解决冲突问题。
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90">
<session-descriptor>
<cookie-path>/</cookie-path>
</session-descriptor>
<jsp-descriptor>
<keepgenerated>true</keepgenerated>
<page-check-seconds>60</page-check-seconds>
<precompile>true</precompile>
<precompile-continue>true</precompile-continue>
</jsp-descriptor>
<container-descriptor>
<optimistic-serialization>true</optimistic-serialization>
<prefer-web-inf-classes>false</prefer-web-inf-classes>
<show-archived-real-path-enabled>true</show-archived-real-path-enabled>
<prefer-application-packages>
<package-name>org.slf4j</package-name>
</prefer-application-packages>
</container-descriptor>
</weblogic-web-app>
log4j与log4j2日志动态打印
实现动态打印,主要是使用配置文件中的打印输出路径不能写死,而是使用系统环境变量,这样就能在设置环境,或者修改系统环境变量下,动态打印日志了
log4j.properties(打印路径使用环境变量 ${logPath})
log4j2.xml(打印路径使用环境变量 ${sys:logPath})
同时修改weblogic的执行文件..\user_projects\domains\base_domain\bin\startWebLogic.cmd
linux环境下应该是修改startWebLogic.sh执行脚本
注释:-D代表添加环境变量
-DlogPath=E:\ 代表添加环境变量名为logPath,数值为E:\ 的环境变量,这样就能实现log4j或log4j2的日志文件动态打印了。
如果解决了大家的问题,希望大家多多评论,或者有什么疑问也可以评论出来,大家一起探讨!