By "each class that is loaded" do you mean each instance of the class needs to 
write to its own company database?

 CompanyService companyService = new CompanyService("AlphaCompany");
 CompanyService companyService = new CompanyService("BetaCompany");
 CompanyService companyService = new CompanyService("GammaCompany");

If that's the case you could extend ILog and add methods that accept an 
identifer which would be used as the database table:

public class CompanyService
{
  private readonly static DatabaseLog log = new 
DatabaseLog(LogManager.GetLogger(typeof(CompanyService)));

  private string companyName;

  public CompanyService(string companyName)
  {
   this.companyName = companyName;
  }

  private int CalculateSomething()
  {
   log.Debug(companyName, "Starting to calculate something");
  }
}

And/or you could create a custom AdoNetAppender that looks for a special MDC 
value and understands what database table to map that to:

<appender name="CompanyAdoNetAppender">
 <companyToTableMappings>
   <companyToTable company="AlphaCompany" table="Alpha" />
   <companyToTable company="BetaCompany" table="Beta" />
 </companyToTableMappings>
</appender>

----- Original Message ----
From: Scott Carr <[EMAIL PROTECTED]>
To: [email protected]
Sent: Wednesday, June 4, 2008 1:14:26 PM
Subject: Log4Net Appender

I am using a static logger at the top of my class, and it is working fine.

Now I need to create an Appender that goes to a specific Company db.  
This changes for each class that is loaded, though.  Is there a way to 
use the static logger in this fashion, where I can change the specific 
instance for the Class Logger?

What would be the best way to implement this?

Should this go on the users list instead? 

Thanks

Reply via email to