java - 使用 Apache Camel 记录到外部文件
问题描述
我有一个 Camel Route,它使用一个 CSV 文件,将其转换为 XML 并将数据流式传输到 ActiveMQ 主题。我只想记录来自我的骆驼路线的消息,以及有关处理消息的详细日志消息等。
代码:
public void configure() throws Exception {
from("file:src/main/resources?fileName=data-sample.csv")
.log("My first log message")
.process(new MyTransformRevised1())
.to("file:src/main/resources/?fileName=emp.xml")
.split(body().tokenizeXML("equityFeeds", null))
.streaming()
.to("jms:topic:reuters.inbound.Topic");
}
添加 log4j.properties 文件:
# Root logger option
log4j.rootLogger=INFO, file, console
log4j.logger.org.apache.camel=DEBUG
log4j.logger.camelprojectupdated.CSVToXMLTransformationRevised1=INFO, file
# camelprojectupdated.CSVToXMLTransformationRevised1 - fully qualified class name of my project. camelprojectupdated is my package name and CSVToXMLTransformationRevised1 is my class name.
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=camel.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d | %p | %F %L | %m%n
# Direct log messages to stdout
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{HH:mm}| %p | %F %L | %m%n
应该是 log4j.properties 还是 log4j2.properties?我也应该有 log4j 或 log4j2 例如: log4j2.appender.console 而不是 log4j.appender.console
要求:
- 我想使用 slf4j 并将输出记录到文件和控制台。
- 我在哪里提供日志文件名和位置,等等
ConsoleFileAppender
。RollingFileAppender
问题:
即使在控制台中我也看不到日志。我的日志文件没有被创建。我已将 log4j.properties 文件放在 classes 文件夹中。即使我想使用 slf4j,我是否必须将 log4j.jar 放在类路径中?
这变得非常困难。
解决方案
您可以加载记录器属性文件并设置记录器以供使用(log4j)。
public enum Logger {
INSTANCE;
public void initializeLogger() {
PropertyConfigurator.configure(Logger.class.getResource("log4j.properties"));
}
}
推荐阅读
- android - 滚动查看寻呼机时视频变为空白
- python - 使用 Tensorflow-Hub 中的 ELMo 时显着增加内存消耗
- svn - 如何从 SVN 存储库中导出具有特定名称的所有文件
- css - 创建一个完整的页面宽度标题
- python - 用特定字符串替换列值
- angular - ui/builder load() 返回未定义
- r - 使用 substr() 和 regexp() 插入具有另一个现有列的特定字符的列没有得到所需的输出
- android - 赋值不是表达式,在此上下文中只允许使用表达式 - 将 Java 转换为 Kotlin 时出错
- angular - Angular 2+,如何手动生成 angular.json
- video-streaming - 实时流媒体 MPD 包含未对齐段开始时间