Created
November 22, 2023 12:20
-
-
Save matthiesenj/9b8c239ab467158a886f11776e512a95 to your computer and use it in GitHub Desktop.
Change logging level of Common.Logging.ILog logger backed by log4net logger, using reflection
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// This is just an example - requires error checking | |
// Due to reflection, it is not necessary to reference the log4net assembly | |
var iLog = LogManager.GetLogger(typeof(TcpStreamFactory)); | |
var field = iLog.GetType().GetField("_logger", BindingFlags.Instance | BindingFlags.NonPublic); | |
var log4netlog = field.GetValue(iLog); | |
var propLogger = log4netlog.GetType().GetProperty("Logger"); | |
var logger = propLogger.GetValue(log4netlog); | |
var propLevel = logger.GetType().GetProperty("Level"); | |
var origLevel = propLevel.GetValue(logger); | |
var fieldOff = propLevel.PropertyType.GetField("Off", BindingFlags.Static | BindingFlags.Public); | |
propLevel.SetValue(logger, fieldOff.GetValue(null)); | |
// do stuff with logger OFF | |
propLevel.SetValue(logger, origLevel); // restore level |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment