| <?xml version="1.0" ?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to you under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <document> |
| |
| <properties> |
| <author email="nicko at apache dot org">Nicko Cadell</author> |
| <title>Apache log4net Manual: Repositories</title> |
| </properties> |
| |
| <meta name="keywords" content="building log4net, log4net" /> |
| |
| <body> |
| <section id="main" name="Apache log4net™ Manual - Repositories"> |
| <section id="repository" name="Logging Repositories"> |
| <p> |
| Logging repositories are considered advanced functionality. The default behavior |
| should be sufficient for most users. |
| </p> |
| <p> |
| Log4net supports logging repositories. A repository is uniquely named. |
| Each repository is a (<span class="code">ILoggerRepository</span>). |
| Multiple assemblies can link to the same repository. |
| </p> |
| <p> |
| By default there is a single logging repository per process (more precisely per AppDomain). This extends |
| across all assemblies loaded into the process and allows them to all share a |
| single configuration. The configuration of the repository only needs to be done once, |
| typically in the entry point to the application, either programmatically or using |
| a configuration attribute. |
| </p> |
| <p> |
| Named logging repositories can be created using the <span class="code">LogManager.CreateRepository</span> |
| method. The repository for can be retrieved using the |
| <span class="code">LogManager.GetRepository</span> method. |
| A repository created in this way will need to be configured programmatically. |
| </p> |
| |
| <section id="attributes" name="Attributes"> |
| <p> |
| An assembly may choose to utilize a named logging repository rather than the default repository. |
| This completely separates the logging for the assembly from the rest of the application. |
| This can be very useful to component developers that wish to use log4net for their |
| components but do not want to require that all the applications that use their |
| component are aware of log4net. It also means that their debugging configuration is |
| separated from the applications configuration. The assembly should specify the |
| <span class="code">RepositoryAttribute</span> to set its logging repository. |
| </p> |
| <p> |
| The log4net logging repositories can be configured using the following assembly-level |
| attributes: |
| </p> |
| <ul> |
| <li> |
| <b>AliasRepositoryAttribute</b> |
| <p> |
| Specifies a named repository to use as this assembly's repository. |
| </p> |
| <p> |
| An assembly's logger repository is defined by its |
| <span class="code">RepositoryAttribute</span>, however this can be overridden by an |
| assembly loaded before the target assembly. |
| </p> |
| <p> |
| An assembly can alias another assembly's repository by specifying |
| this attribute with the name of the target repository. |
| </p> |
| <p> |
| This attribute may be used as many times as necessary to alias all the required |
| repositories. |
| </p> |
| </li> |
| <li> |
| <b>RepositoryAttribute</b> |
| <p> |
| Specifies the logging repository for the assembly. |
| </p> |
| <p> |
| Assemblies are mapped to logging repositories. This attribute controls the configuration of the repository. The |
| <span class="code">Name</span> property specifies the name of the repository |
| for this assembly. The <span class="code">RepositoryType</span> |
| property specifies the type of the repository object to create for the assembly. |
| If this attribute is not specified and a <span class="code">Name</span> |
| is not specified then the assembly will be part of the default shared logging |
| repository. |
| </p> |
| <p> |
| This attribute may only be used once per assembly. |
| </p> |
| </li> |
| </ul> |
| </section> |
| </section> |
| </section> |
| </body> |
| </document> |