separate task log files (slf4j + logback)

Hello! I began to consider the possibility of logging in a new major Java application and so far I could not find (jul, logback) how to do the following: - Loggers for different subtasks are created inside the program (LoggerFactory.getLogger(logName)), I want the logName to be the name of the log file, the number of subtasks is unknown in advance, i.e. so you do not have to edit the configuration file when writing the next subtask, which explicitly assigns the log name and correlates it with some file. Is it possible to register this once at the configuration file level so that it does not have to be changed in the future? Thanks for your job. Best regards Denis Matveev Russia Ekaterinburg

On Tue, Oct 17, 2017 at 4:28 PM, Денис Матвеев <denism78@gmail.com> wrote:
I began to consider the possibility of logging in a new major Java application and so far I could not find (jul, logback) how to do the following: - Loggers for different subtasks are created inside the program (LoggerFactory.getLogger(logName)), I want the logName to be the name of the log file, the number of subtasks is unknown in advance,
You need to use https://logback.qos.ch/manual/mdc.html Logger names are capable to be filtered in hierarchical way. Your thoughts to use them differently are ill minded... In order to write to different file names you need to implement custom writer/appender. It's better to provide job in in MDC context: MDC.put("job-id", "money-pump-2"); if ( ! pumpMoney()) log.error("where is my money?"); MDC.remove("job-id"); and collect and route logs in Fluentd, Logstash, Flume, Kafka etc or save to storage like Elasticsearch, MongoDB, Couchbase, etc and do business analyze / troubleshooting by filter on job-id .

Hi Denis, I think SiftingAppender is the way to go here. See https://logback.qos.ch/manual/appenders.html#SiftingAppender -- Ceki On 17.10.2017 15:28, Денис Матвеев wrote:
Hello!
I began to consider the possibility of logging in a new major Java application and so far I could not find (jul, logback) how to do the following: - Loggers for different subtasks are created inside the program (LoggerFactory.getLogger(logName)), I want the logName to be the name of the log file, the number of subtasks is unknown in advance,
i.e. so you do not have to edit the configuration file when writing the next subtask, which explicitly assigns the log name and correlates it with some file.
Is it possible to register this once at the configuration file level so that it does not have to be changed in the future?
Thanks for your job.
Best regards
Denis Matveev
Russia
Ekaterinburg
participants (3)
-
Ceki Gulcu
-
Oleksandr Gavenko
-
Денис Матвеев