title: How to configure log4net programmatically from scratch (no config)
body: <p>This is a Bad Idea, I know, but...
  I want to configure log4net programmatically from scratch with no config file. I'm working on a simple logging application for me and my team to use for a bunch of relatively small departmental applications we're responsible for. I want them to all log to the same database. The logging application is just a wrapper around log4net with the AdoNetAppender preconfigured.</p>
  
  <p>All of the applications are ClickOnce deployed, which presents a small problem with deploying the config file. If the config file were part of the core project, I could set its properties to deploy with the assembly. But it's part of a linked application, so I don't have the option of deploying it with the main application. (If that's not true, somebody please let me know).</p>
  
  <p>Probably because it's a Bad Idea, there doesn't seem to be much sample code available for programmatically configruating log4net from scratch. Here's what I have so far.</p>
  
  <pre><code>Dim apndr As New AdoNetAppender()
  apndr.CommandText = "INSERT INTO LOG_ENTRY (LOG_DTM, LOG_LEVEL, LOGGER, MESSAGE, PROGRAM, USER_ID, MACHINE, EXCEPTION) VALUES (@log_date, @log_level, @logger, @message, @program, @user, @machine, @exception)"
  apndr.ConnectionString = connectionString
  apndr.ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
  apndr.CommandType = CommandType.Text
  Dim logDate As New AdoNetAppenderParameter()
  logDate.ParameterName = "@log_date"
  logDate.DbType = DbType.DateTime
  logDate.Layout = New RawTimeStampLayout()
  apndr.AddParameter(logDate)
  Dim logLevel As New AdoNetAppenderParameter()
  logLevel.ParameterName = "@log_level"
  'And so forth...
  </code></pre>
  
  <p>After configuring all the parameters for <code>apndr</code>, I at first tried this...</p>
  
  <pre><code>Dim hier As Hierarchy = DirectCast(LogManager.GetRepository(), Hierarchy)
  hier.Root.AddAppender(apndr)
  </code></pre>
  
  <p>It didn't work. Then, as a shot in the dark, I tried this instead.</p>
  
  <pre><code>BasicConfigurator.Configure(apndr)
  </code></pre>
  
  <p>That didn't work either. Does anybody have any good references on how to configure log4net programmatically from scratch with no config file?</p>