You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, the library preserves log4net behavior when it comes to having same property with different values in the log scopes. Values are concatenated with space.
using(_logger.BeginScope(("Prop",123_))){_logger.LogInformation("Log 1");// has "123" in the log propertyusing(_logger.BeginScope(("Prop",456))){_logger.LogInformation("Log 2");// has "123 456" in the log propertyusing(_logger.BeginScope(("Prop",789))){_logger.LogInformation("Log 3");// has "123 456 789" in the log property}}}
However, when using Serilog as ILogger implementation, it always adds the latest value to the log properties:
using(_logger.BeginScope(("Prop",123_))){_logger.LogInformation("Log 1");// has "123" in the log propertyusing(_logger.BeginScope(("Prop",456))){_logger.LogInformation("Log 2");// has "456" in the log propertyusing(_logger.BeginScope(("Prop",789))){_logger.LogInformation("Log 3");// has "789" in the log property}}}
This behavior better suits our case. We have code paths spread across applications and a shared library where same property might be added multiple times in the library and in the apps. All code uses ILogger abstraction, but different services use different logging frameworks (log4net and Serilog). We'd like to have a consistent behavior in this case. We can plug in custom implementation of ILog4NetLoggingEventFactory but would really like to avoid taking care and maintaining any extra code.
Would it make sense to have a setting which controls whether all values or latest value is written to the logs? Something like:
Hi,
Currently, the library preserves log4net behavior when it comes to having same property with different values in the log scopes. Values are concatenated with space.
However, when using Serilog as
ILogger
implementation, it always adds the latest value to the log properties:This behavior better suits our case. We have code paths spread across applications and a shared library where same property might be added multiple times in the library and in the apps. All code uses
ILogger
abstraction, but different services use different logging frameworks (log4net and Serilog). We'd like to have a consistent behavior in this case. We can plug in custom implementation ofILog4NetLoggingEventFactory
but would really like to avoid taking care and maintaining any extra code.Would it make sense to have a setting which controls whether all values or latest value is written to the logs? Something like:
If this is sensible, I can take care of the PR once we agree on the design and naming.
Thank you!
The text was updated successfully, but these errors were encountered: