我在log4jproperties文件中尝试了下面的package appender,但它没有用。 请帮我解决这个问题。
log4j.logger.com.ewp.*.service=ERROR,SERVICELOG
#SERVICELOG appender
log4j.appender.SERVICELOG=org.apache.log4j.RollingFileAppender
log4j.appender.SERVICELOG.File=C:/Log/service_log.log
log4j.appender.SERVICELOG.layout=org.apache.log4j.PatternLayout
答案 0 :(得分:0)
log4j(1.x)中只有前缀或继承的概念,因此您无法做到这一点。
请参阅https://logging.apache.org/log4j/1.2/manual.html
您需要将任何* .service leaf包放入配置文件中。
或者,你可以使用不同的记录器名称,也许是一些与命名方案相反的名称,或者更具象征性的东西(我的意思是,如果你还需要专用的记录,这可能是有效的)。如果编码开销可以接受,则使用辅助记录器。
想一想:
Logger log = Logger.getLogger("any.string.prefix.here." + "some.suffix");
编辑:如果您能够修改类路径并将log4j-extras添加到其中,您可以从那里获得有关过滤器的帮助:https://logging.apache.org/log4j/extras/apidocs/org/apache/log4j/filter/package-summary.html
但是,AFAICS,ExpressionFilter会对Message&LoggerMatchFilter上的完全记录器名称进行过滤 - 所以这些也可能不是解决方案。