Log4j 同一Application两份Log的问题

wendli2008 2010-08-09 02:24:15
现有两个log4j配置log4j-a.properties,log4j-b.properties;两个配置的内容不同,写入的文件也不同。

有如下一段code

loadConfig(log4j-a.properties)
part 1
loadConfig(log4j-b.properties)
part 2
part 3



现在要使part 1,part3的log按照log4j-a.properties去写,part2的log按照log4j-b.properties去写
有什么办法可以实现吗?

loadConfig这里都可以显示的用api去读properties文件
...全文
71 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
joy_liut 2010-08-09
  • 打赏
  • 举报
回复
其实完全可以自己实现个日志管理器;而实现方法最主要的就是如何在JVM里的堆栈里获取自己的日志在类里的相关信息(类名、方法名、行数...)了...
wendli2008 2010-08-09
  • 打赏
  • 举报
回复
虽然不是完全match,但是似乎曲线救国也可以一试,谢谢勒~
好吃的松子 2010-08-09
  • 打赏
  • 举报
回复

<appender name="log111" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logfile111.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%t]...."/>
</layout>
</appender>

<appender name="log222" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logfile222.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%t]...."/>
</layout>
</appender>

<logger name="com.jathon.pack1111" additivity="false">
<level value="debug"/>
<appender-ref ref="log111"/>
</logger>

<logger name="com.jathon.pack222" additivity="false">
<level value="INFO"/>
<appender-ref ref="log222" />
</logger>


如果是根据包不同来区分写入哪个log文件,只要如上配置就可以。
如果其他区分方式,那就在需要写log的类中Log log = LogFactory.getLog("com.jathon.pack222")
撞撞小屁股 2010-08-09
  • 打赏
  • 举报
回复
那也不用建两个properties ,我给你个示例看看是不是这样的需求 :)

------log4j.properties ---------
log4j.logger.Test1=info,t1
log4j.appender.t1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.t1.File=d:\\T1.log
log4j.appender.t1.DatePattern='.'yyyy-MM-dd
log4j.appender.t1.layout=org.apache.log4j.PatternLayout
log4j.appender.t1.layout.ConversionPattern=%p,%t,%l,%d{ISO8601}, - ,%m%n


log4j.logger.Test2=info,t2
log4j.appender.t2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.t2.File=d:\\T2.log
log4j.appender.t2.DatePattern='.'yyyy-MM-dd
log4j.appender.t2.layout=org.apache.log4j.PatternLayout
log4j.appender.t2.layout.ConversionPattern=%p,%d{ISO8601}, - ,%m%n


Logger logger1 = Logger.getLogger("Test1");
Logger logger2 = Logger.getLogger("Test2");

logger1.info("part 1");
logger1.info("part 3");
logger2.info("part 2");
wendli2008 2010-08-09
  • 打赏
  • 举报
回复
因为不同的log要导入不同的文件,而且log的格式也不一样。
撞撞小屁股 2010-08-09
  • 打赏
  • 举报
回复
为什么要建两个properties?

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧