In questo articolo vengono fornite indicazioni / esempio su come impostare i contenuti dei files in una app di WPF, senza entrare nel dettaglio di tutti i particolari che sono accessibili direttamente dalla documentazione ufficiale (http://logging.apache.org/log4net/). Verrà pertanto fornito un esempio copy/paste/go da modificare in funzione delle specifiche esigenze…
File app.config:
<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/> </configSections> <log4net> <root> <level value="DEBUG"/> <appender-ref ref="SmtpAppender"/> <appender-ref ref="LogFileAppender"/> <appender-ref ref="ColoredConsoleAppender"/> </root> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="LogFile-log.txt"/> <param name="AppendToFile" value="true"/> <rollingStyle value="Size"/> <maxSizeRollBackups value="10"/> <maximumFileSize value="1MB"/> <staticLogFileName value="true"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/> </layout> </appender> <appender name="ColoredConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/> </layout> </appender> <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender"> <to value="mail@mail.com"/> <from value="log@sender.com"/> <subject value="Log Message ..."/> <smtpHost value="SMTP.com"/> <bufferSize value="512"/> <lossy value="true"/> <evaluator type="log4net.Core.LevelEvaluator"> <threshold value="ERROR"/> </evaluator> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/> </layout> </appender> </log4net>
File AssemblyInfo.cs
... using log4net; using log4net.Config; [assembly: log4net.Config.XmlConfigurator(Watch = true)] ...
File App.xaml.cs
...using System.Windows; using log4net; namespace GeStAv { /// <summary> /// Interaction logic for App.xaml /// </summary> public partial class App : Application { private static readonly ILog Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); protected override void OnStartup(StartupEventArgs e) { log4net.Config.XmlConfigurator.Configure(); base.OnStartup(e); } } }
Maschere e classi
public partial class Window1 : Window { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); public Window1() { InitializeComponent(); log.Info("FormLogIn Opened..."); } }