Tôi có một cấu trúc liên kết bão và tôi muốn đăng nhập một số sự kiện xảy ra trong cấu trúc liên kết vào một tệp nhật ký riêng biệt. Tôi đang cố gắng để tạo một appender tùy chỉnh trong cơn bão/logback/cluster.xml sẽ được sử dụng để đăng nhập các sự kiện này. Dưới đây là đoạn cluster.xml của tôi được thiết lập mọi thứ:Tùy chỉnh logback appender cho Topology
<appender name="A2" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${storm.home}/logs/custom-logger/cl-log.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${storm.home}/logs/${logfile.name}.%i</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>9</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>100MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd_HH:mm:ss} %c{1} [%p] %m$n</pattern>
</encoder>
</appender>
<logger name="custom-logger" additivity="false">
<level value="INFO" />
<appender-ref ref="A2"/>
</logger>
Tôi đang sử dụng WordCountTopology cơ bản để chỉ kiểm tra ví dụ. Đây là đoạn mã mà tôi đang cố gắng ghi vào tệp nhật ký
public static class WordCount extends BaseBasicBolt {
private static final org.slf4j.Logger CUSTOM_LOGGER =
LoggerFactory.getLogger("custom-logger");
Map<String, Integer> counts = new HashMap<String, Integer>();
public void execute(Tuple tuple, BasicOutputCollector collector) {
String word = tuple.getString(0);
Integer count = counts.get(word);
if (count == null)
count = 0;
count++;
counts.put(word, count);
CUSTOM_LOGGER.info("Emitting word[" + word + "] count["+ count + "]");
collector.emit(new Values(word, count));
}
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declare(new Fields("word", "count"));
}
}
Không có vấn đề gì, tôi dường như không thể hiển thị nhật ký này trong nhật ký ghi nhật ký tùy chỉnh. tệp nhật ký. Điều này thậm chí có thể xảy ra trong Storm để ghi lại các sự kiện cụ thể vào một tệp cụ thể bằng cách sử dụng logback không? Bất kỳ trợ giúp sẽ được đánh giá cao.
Bạn có biết cách định cấu hình đăng nhập ở chế độ cục bộ không? –
cách bạn tách nhật ký hệ thống khỏi nhật ký cấu trúc liên kết của mình? – Mani
@Mani Bằng cách tạo appender ở trên bạn kiểm soát chính xác những gì bạn đăng nhập bằng cách tạo ra private static final org.slf4j.Logger CUSTOM_LOGGER = LoggerFactory.getLogger ("custom-logger"); – medium