I'm trying to log messages with NLog
to multiple targets, with multiple final
rules.
Situation
NLog Version: 4.7.5
Plattform: .NET CORE 3.1
Config: XML File
and configured programmatically
I have 2 targets File
and Console
LogManager.Configuration.AddTarget(fileTarget);
LogManager.Configuration.AddTarget(consoleTarget);
And multiple rules like
new LoggingRule() {LoggerNamePattern = "A*", Target = fileTarget, MinLevel = Warn, Final = true};
new LoggingRule() {LoggerNamePattern = "A.Lot*", Target = fileTarget, MinLevel = Warn, Final = true};
new LoggingRule() {LoggerNamePattern = "A.Lot.Of*", Target = fileTarget, MinLevel = Info, Final = true};
new LoggingRule() {LoggerNamePattern = "A.Lot.Of.Hierarchical*", Target = fileTarget, MinLevel = Info, Final = true};
new LoggingRule() {LoggerNamePattern = "A.Lot.Of.Hierarchical.Rules*", Target = fileTarget, MinLevel = Debug, Final = true};
new LoggingRule() {LoggerNamePattern = "A*", Target = consoleTarget, MinLevel = Warn, Final = true};
new LoggingRule() {LoggerNamePattern = "A.Lot*", Target = consoleTarget, MinLevel = Warn, Final = true};
new LoggingRule() {LoggerNamePattern = "A.Lot.Of*", Target = consoleTarget, MinLevel = Warn, Final = true};
new LoggingRule() {LoggerNamePattern = "A.Lot.Of.Hierarchical*", Target = consoleTarget, MinLevel = Warn, Final = true};
new LoggingRule() {LoggerNamePattern = "A.Lot.Of.Hierarchical.Rules*", Target = consoleTarget, MinLevel = Trace, Final = true};
I know that Target
and MinLevel
are no valid properties, but it's easier to show
The Rules
must be final
, otherwise all my log messages are duplicated.
EDIT: The users can change the LogLevel
for each rule
and for each target
on runtime.
Problem
When I crate a new rule
, I have to set the targets
for this rule
. When I add multiple targets
to one rule, I get the message in each target but I can only define the LogLevel
for both targets
. And when I add the rule
twice, with one target
for each rule
, then I get the messages only in the console and not in the file, because the final
stops the other rules
.
I've already checked the NLog Page, NLog GitHub and StackOverflow pages. All their problems are how to log to multiple targets, or log to multiple targets with different rules but only with one rule per target.
Expected
Define multiple final
rules
with different LogLevel
for each Target