The Log4Net mailing list is a great source of information about using log4Net, in this forum we collect all the messages in the log4net user list and some selected threads from the developer list.
| Author |
Messages |
|
Erlis Vidal
 |
| 10/23/2007 11:10 PM |
|
Hi everyone!
I want to configure log4net in order to use the same configuration file (with the watch option active) in my n-tier application!
I have the following structure in my solution:
Website (as a web application project)
Business (as a class library project)
Data (as a class library project)
Test (as a class library project)
I want to be able to log messages in any of those layers using the same log4net configuration file...
Can you provide any suggestion for the right configuration?
Regards,
Erlis |
|
|
|
|
Dave McEwan
 |
| 10/23/2007 11:17 PM |
|
For each project, reference the log4net dll and put the following line in the assemblyInfo file:
[assembly: log4net.Config.XmlConfigurator( ConfigFile="log4net.config",Watch=true )]
Now at the class level for each class add the following line to create an instance of the logger:
private static readonly ILog log = LogManager.GetLogger( MethodBase.GetCurrentMethod().DeclaringType);
Now you can make calls like so from your methods:
log.Error(ex.Message.ToString(), ex);
Hope that helps
Dave
|
|
|
|
|
Walden H. Leverich
 |
| 10/24/2007 1:28 AM |
|
> For each project, reference the log4net dll and put the following line in the assemblyInfo file:
I agree with referencing the log4net.dll, but I don’t think you need to put the [assembly…] attribute in. At least not if the top-level application (asp.net) does the configure through code. We don’t use the attribute at all and we get logging from all our levels. Our ASP.Net code does though do this in global.sasx:
protected void Application_Start(object sender, EventArgs e)
{
string configFile = Server.MapPath(ConfigurationManager.AppSettings["log4net-config-file"]);
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(configFile));
log = log4net.LogManager.GetLogger(
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
log.InfoFormat("Watching '{0}'", configFile);
}
-Walden
--
Walden H Leverich III Tech Software (516) 627-3800 x3051
WaldenL@TechSoftInc.com http://www.TechSoftInc.com
Quiquid latine dictum sit altum viditur. (Whatever is said in Latin seems profound.) |
|
|
|
|
Dean Fiala
 |
| 10/24/2007 2:30 AM |
|
You are correct, there is no need to set the attribute in each assembly. The top level assembly handles the configuration -- everyone else goes along for the ride. We have a number of library assemblies that get used in different applications (web app, web service, service), so we didn't want to hard code any configuration information at the library level. Fortunately, there is no need to. A reference to log4net and a call to LogManager.GetLogger() in the library classes is all that is needed.
Regards,
Dean Fiala
|
|
|
|
|
li nan
 |
| 10/25/2007 4:46 AM |
|
You can create a common layer dll to be referenced by other all dll files. Then in this common file, there is a public class:
public class Log{ private log=ILog.Logger...........//Log4Net interface.
//open the log interface from here public void DEBUG(string strlog) { log.Debug(strlog); }
public void FATEL(string strlog) { log.Fater(strlog); } public void ERROR(string strlog) { log.Error(strlog); } ....... //Other interfaces.. }
|
|
|
|
|
|
| You are not authorized to post a reply. |
|
|
|
ActiveForums 3.7
|