It sounds like you want to separate the logging done in your shared
assembly and the (optional) logging done in the main application.
All logging and logging configuration is done using a logger repository.
There is a default logger repository that is used by all assemblies,
however it is possible to use a different logger repository for your
shared assemblies.
On your shared assemblies you should specify the
log4net.Config.RepositoryAttribute. The RepositoryAttribute is used to
map the assembly to a named repository. All your shared assemblies
should specify the same name for the repository. E.g.
[assembly: log4net.Config.Repository("shared-assembly-product-name")]
Then all your assemblies will use a repository that is different to the
1 used by the application. This means that your assemblies will have
separate logging behaviour to the main application and the main
application does not need to know about log4net.
You should still use the XmlConfiguration attribute in your assembly to
specify where the logging configuration for your repository should be
loaded from.
This is quite complex to setup correctly. You may need to enable log4net
internal debug to see which logger repositories log4net is creating and
where it is trying to load the config from. For details see:
http://logging.apache.org/log4net/release/faq.html#internalDebug
Cheers,
Nicko
------------
Nicko Cadell
log4net development
http://logging.apache.org/log4net
-----Original Message-----
From: minherz [mailto:[EMAIL PROTECTED]
Sent: 30 April 2007 11:07
To: [email protected]
Subject: 3rd party assembly logging configuration
Hello. I failed finding a clear answer to my question here, though there
are
several posts that touching the subject.
I have a set of shared assembly which use log4net. However, the
application
does not have to use it as well i do not want that the log4net
configuration
of the application will dictate logging behavior of the shared assembly.
In
the case the developer wants to output log from the shared assembly he
will
have to define a separate configuration file. While the file is not
there no
logging should be performed by the shared assembly.
I tried defining XmlConfiguration attribute with explicit config file
name
in the AssemblyInfo of my shared library. It is either ignored or does
not
work for other reason. All the output is displayed according to root
configuration of the application.
I know that i can filter it out by using logger element, but i have
different requirement.
I found several articles that suggest using in code call for
configuration.
My problem is that the shared assembly is a class library which provide
a
collection of classes and i have no idea which of them will be created
first. I also can not define some initialization method as it is against
the
design requirements.
Can anybody advise how i can solve this matter?
--
View this message in context:
http://www.nabble.com/3rd-party-assembly-logging-configuration-tf3668813
.html#a10251023
Sent from the Log4net - Users mailing list archive at Nabble.com.