Hi:
I am trying to create a test program that configures a logger completely
from code (I want to avoid a config/xml file for this exercise), but
although I'm not getting any errors, no log file is created.
Can anyone help?
Regards,
Martin.
Here is my code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace log4net
{
public partial class FrmMainFormLog4Net : Form
{
private enum LogDestination { None, File, Access, MsSql }
private static LogDestination logDestinationType = LogDestination.None;
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public FrmMainFormLog4Net()
{
InitializeComponent();
//log4net.Config.XmlConfigurator.Configure(); //--- Load from
App.Config file
//log4net.Config.BasicConfigurator.Configure(); //--- Use Console
output
setupLogDestino(LogDestination.File);
}
private void button_Click(object sender, EventArgs e)
{
if(sender == btnDebug)
log.Debug("*Debug message");
else if(sender == btnInfo)
log.Info("**Information message");
else if(sender == btnWarn)
log.Warn("***Warning message");
else if(sender == btnError)
log.Error("****Error message");
else if(sender == btnFatal)
log.Fatal("*****Fatal message", new Exception("My exception
message"));
}
private void destino_CheckedChanged(object sender, EventArgs e)
{
RadioButton rb = sender as RadioButton;
if(rb != null)
{
if(rb == rbFile && rb.Checked)
setupLogDestino(LogDestination.File);
else if(rb == rbAccess && rb.Checked)
setupLogDestino(LogDestination.Access);
else if(rb == rbMsSql && rb.Checked)
setupLogDestino(LogDestination.MsSql);
}
}
private static void setupLogDestino(LogDestination destination)
{
if(destination != logDestinationType)
{
log4net.Layout.PatternLayout layout = new
log4net.Layout.PatternLayout("%d [%t] %-5p %c [%x] <%X{auth}> -
%m%n");
switch(destination)
{
case LogDestination.File:
{
string logFileName = System.IO.Path.Combine(
AppDomain.CurrentDomain.BaseDirectory,
System.IO.Path.ChangeExtension(AppDomain.CurrentDomain.FriendlyName,
".log"));
log4net.Appender.FileAppender appender = new
log4net.Appender.FileAppender
{
AppendToFile = true,
File = logFileName,
Layout = layout,
Threshold = log4net.Core.Level.All
};
log4net.Config.BasicConfigurator.Configure(appender);
}
break;
case LogDestination.Access:
//--To do
break;
case LogDestination.MsSql:
//--To do
break;
}
}
}
}
}