You can configure log4net anywhere - in main service EXE, in DLL which really 
does the job.... The only condition is to configure logging system before its 
first use. You can create Init() method somewhere in Logutil.dll to configure 
logging system and call it during application startup.
If there is problem to configure logging using app.config file, try to use the 
second way using separate config file to check if it works - if not, you have 
probably error in code related to config file location.
R


________________________________

        From: Jeegnesh Sheth [mailto:[EMAIL PROTECTED] 
        Sent: Monday, October 06, 2008 2:23 PM
        To: Log4NET User
        Subject: RE: Log4net in a windows service
        
        

        Radovan,

        LogUtil.dll

        This has some custom logging as well as log4net dll reference and uses 
a custom appender to log. This is where I perform

         

         

        Myservice.exe has the following dll's that it uses

        -          Dosomething.dl -à uses Logutil.dll and is included as a 
reference.

        -          Myservice.exe.app.config

         

         

        From your information, I assume I should do this in LogUtil.dll and in 
the default cstor of Logutil, I should obtain the path to the 
myservice.exe.app.config path and set it.

                log = LogManager.GetLogger(typeof(LogUtil)); in the cstor

         

        Myservice.exe does not need to do any logging, only DoSomething library 
needs to perform the logging.

         

         

        The error I get is a generic  .Net framework error showing all the 
assemblies which caused the error which may be due to versioning but the logs 
do not indicate this. So I did a clean install and that error was no longer the 
case but then it came down to just a system violation error each time I try to 
perform xmlconfigurator.configure() in the default cstor of the Myservice.

         

        Thanks

         

         

        From: Radovan Raszka [mailto:[EMAIL PROTECTED] 
        Sent: Saturday, October 04, 2008 4:32 PM
        To: Log4NET User
        Subject: RE: Log4net in a windows service

         

        I configure log4net in main service class constructor. What kind of 
crash have you met - any exception (what?) ?

        public class IPservice : ServiceBase

        { ...

            public IPservice()

            {

                InitializeComponent();

                this.CanPauseAndContinue = false;

                this.CanShutdown = true;

                this.CanHandleSessionChangeEvent = false;

                this.AutoLog = false;

                this.ServiceName = IPservice.SrvName;

                XmlConfigurator.Configure();

                log = LogManager.GetLogger(typeof(IPservice));

            }

            protected override void OnStart(string[] args){ ...}

            protected override void OnStop() {...}

        }

                 

                
________________________________


                From: Jeegnesh Sheth [mailto:[EMAIL PROTECTED] 
                Sent: Friday, October 03, 2008 10:36 PM
                To: Log4NET User
                Subject: RE: Log4net in a windows service

                Radovan,

                 Myservice.exe has the following:

                Default cstor

                 

                A main entry point into process, named main

                 

                 

                Onstart and onstop methods

                 

                If I place the XMlConfiguartor.configure() in any of the 
methods above, my applications keeps crashing. Is there something I am missing? 
I am trying to use your first solution.

                 

                 

                Many thanks

                From: Radovan Raszka [mailto:[EMAIL PROTECTED] 
                Sent: Friday, October 03, 2008 3:58 PM
                To: Log4NET User
                Subject: RE: Log4net in a windows service

                 

                Ok, there is also dependency on where log4net is set up.

                Examples in my last mail works, if log4net is configured from 
Myservice.exe (not from DLL), and config is stored in Myservice.exe.config (you 
add app.config to the project, but Visual studio copies this file to the output 
folder as <projectname>.exe.config, what is correct)

                If configuration is done from DLL, then logutil.DLL.config 
probably can not be used (at least it didn't work for me and I was told that 
application file is always searched as <processname>.exe.config), so save 
config into Myservice.exe.config or use second example.

                Radovan

                         

                        
________________________________


                        From: Jeegnesh Sheth [mailto:[EMAIL PROTECTED] 
                        Sent: Friday, October 03, 2008 9:22 PM
                        To: Log4NET User
                        Subject: RE: Log4net in a windows service

                        Radovan,

                                    This is how my application is set up

                         

                        LogUtil.dll

                        This has some custom logging as well as log4net dll 
reference and uses a custom appender to log

                         

                         

                        Myservice.exe has the following dll's that it uses

                        -          Logutil.dll

                        -          Dosomething.dl

                        -          Myservice.exe.app.config

                         

                        Dosomthing.dll instantiates logutil.dll to write the 
logs.

                         

                        I tried putting your xmlconfigurator.configure in 
logutil.dll and that did not work

                         

                        I then tried placing it in dosomething.dll which did 
not work

                         

                        Placing it in myservice.exe did not produce anything

                         

                        Thoughts/ suggestions?

                         

                        From: Radovan Raszka [mailto:[EMAIL PROTECTED] 
                        Sent: Friday, October 03, 2008 10:41 AM
                        To: Log4NET User
                        Subject: RE: Log4net in a windows service

                         

                        there are 2 option:

                        1/ XmlConfigurator.Configure();

                        this configures log4net using app.config file, which 
must be in this form:

                        <?xml version="1.0" encoding="utf-8" ?>

                        <configuration>

                            <configSections>

                                <section name="log4net" 
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

                            </configSections>

                            <appSettings>

                        ....

                            </appSettings>

                            <log4net>

                        ....

                            </log4net>

                        </configuration>

                        This is probably best solution as you have only one 
config file for both application and log4net.

                        2/ configure log4net using extra XML file

                        XmlConfigurator.Configure(new 
System.IO.FileInfo(GetAppPath() + "log4net.xml"))

                        .....

                        public string GetAppPath()

                        {

                        string myPath = 
System.Reflection.Assembly.GetExecutingAssembly().Location;

                        int i = myPath.LastIndexOf('\\');

                        return myPath.Remove(i + 1);

                        }

                        Both solutions works well with service, but when 
log4net config is changed, you must restart your service.

Reply via email to