情况是:
->使用ConsoleAppender配置的使用登录的自制容器应用程序。不同的记录器根据软件包指定日志级别:
<logger name="com.mycompany.package1">
<level value="DEBUG"/>
</logger>
<logger name="com.mycompany.package2">
<level value="INFO"/>
</logger>
->使用RollingFileAppender配置的使用登录的嵌入式Jetty应用。
我需要将两个日志输出发送到相同的滚动文件,因此我试图在嵌入式Jetty应用程序中捕获容器STDOUT。有没有办法做到这一点?这是错误的做法吗?
注意:我可以同时访问两个logback.xml进行编辑。
答案 0 :(得分:0)
如果您要进行ConsoleAppender
的登录配置,则不要尝试捕获输出并再次记录它(您刚刚创建了一个循环)。
相反,只需将Jetty配置为将slf4j用于其自身的事件,而不使用RolloverFileOutputStream
或console-capture
module(来自jetty-home)。
最简单的方法是不执行任何操作,服务器类路径中仅存在slf4j-api-<ver>.jar
足以使Jetty使用slf4j记录其自身的事件。
简而言之,您的服务器类路径需要:
slf4j-api-<ver>.jar
logback-classic-<ver>.jar
和logback-core-<ver>.jar
)${jetty.base}/resources/
目录,其中包含2个文件:
jetty-logging.properties
和一行org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog
logback.xml
)请确保您不使用Jetty's RollingFileOutputStream
to capture System.out
and/or System.err
to a file。