Summary of .NET frameworks supported by log4net
log4net now builds on 5 frameworks:
Framework | Website |
---|---|
Microsoft .Net Framework 1.0 (1.0.3705) | http://msdn.microsoft.com/net |
Microsoft .Net Framework 1.1 (1.1.4322) | http://msdn.microsoft.com/net |
Microsoft .Net Compact Framework 1.0 (1.0.5000) | http://msdn.microsoft.com/vstudio/device/compactfx.asp |
Mono 0.25 or higher | http://www.go-mono.org |
Microsoft Shared Source CLI 1.0 | http://msdn.microsoft.com/library/en-us/dndotnet/html/mssharsourcecli.asp |
For each of these frameworks, an assembly targeting that the framework is supplied. Although it's perfectly possible to use the .NET Framework 1.0 version of log4net on the .NET Framework 1.1, having an assembly that really targets a specific framework allows us to use features in that framework that are not available in other frameworks or remove features from log4net that are not supported in a specific framework.
Appenders
The appenders available to each framework depend on the functionality of the framework and the platform it runs on:
Appender | .NET Framework 1.0 | .NET Framework 1.1 | .NET Compact Framework 1.0 | Mono 0.25 or higher | Shared Source CLI 1.0 |
---|---|---|---|---|---|
ADONetAppender | x | x | x | x | |
ASPNetTraceAppender | x | x | x | ||
BufferingForwardingAppender | x | x | x | x | x |
ColoredConsoleAppender | x | x | |||
ConsoleAppender | x | x | x | x | x |
CountingAppender | x | x | x | x | x |
EventLogAppender | x | x | |||
FileAppender | x | x | x | x | x |
ForwardingAppender | x | x | x | x | x |
MemoryAppender | x | x | x | x | x |
NetSendAppender | x | x | |||
OutputDebugStringAppender | x | x | x | ||
RemotingAppender | x | x | x | x | |
RollingFileAppender | x | x | x | x | x |
SMTPAppender | x | x | x | ||
SmtpPickupDirAppender | x | x | x | x | x |
TraceAppender | x | x | x | x | x |
UdpAppender | x | x | x | x | x |
Framework Specific Notes
Microsoft .Net Framework 1.0 (1.0.3705)
none
Microsoft .Net Framework 1.1 (1.1.4322)
none
Microsoft .Net Compact Framework 1.0 (1.0.5000)
-
Assembly attributes
The .NET Compact Framework 1.0 does not support retrieving assembly-level attributes, therefore all log4net configuration attributes were removed from the .NET Compact Framework 1.0 version of log4net.
For Smart-device applications, the log4net system can be configured by passing the location of the log4net configuration file to the log4net.Config.DOMConfigurator.Configure(FileInfo) method in the entry point of the application.
For example:
namespace TestApp { using System.IO; public class EntryPoint { /// <summary> /// Application entry point. /// </summary> public static void Main() { // Uncomment the next line to enable log4net internal debugging // log4net.helpers.LogLog.InternalDebugging = true; // This will instruct log4net to look for a configuration file // called config.log4net in the root directory of the device log4net.Config.DOMConfigurator.Configure(new FileInfo(@"\config.log4net")); ... // This will shutdown the log4net system log4net.LogManager.Shutdown(); } } }
-
Notification events
The .NET Compact Framework 1.0 does not support notification events during the application shutdown, therefore log4net cannot automatically hook the application shutdown notification.
Applications will need to programmatically shutdown the log4net system during the application's shutdown using the log4net.LogManager.Shutdown() method in order to prevent losing logging events. See the code above for an example.
-
FileSystemWatcher
The .NET Compact Framework 1.0 does not support the System.IO.FileSystemWatcher class. As a result, the DOMConfiguratorAttribute.Watch property and the DOMConfigurator.ConfigureAndWatch methods are not available. Watching changes to the log4net configuration file is not supported on the .NET Compact Framework 1.0.
-
UserName
The .NET Compact Framework 1.0 does not support the System.Security.Principal.WindowsIdentity class. This is used to capture the current thread's user identity. Therefore the LoggingEvent.UserName property will return the value "NOT AVAILABLE".
-
Identity
The .NET Compact Framework 1.0 does not support the System.Security.Principal.IPrincipal interface. This is used to capture the current thread's user identity. Therefore the LoggingEvent.Identity property will return the value "NOT AVAILABLE".
-
Environment variables
The .NET Compact Framework 1.0 does not support retrieving environment variables, therefore it's not possible to substitute environment variables in parameter values when using the .NET Compact Framework 1.0 version of log4net.
-
Serialization
The .NET Compact Framework 1.0 does not support serialization, therefore none of the log4net classes in the .NET Compact Framework 1.0 version are serializable.
-
LoggingEvent.Domain
The .NET Compact Framework 1.0 does not support AppDomain functionality. The friendly name for the current AppDomain is stored in the LoggingEvent.Domain property and is accessed using the %a pattern of the PatternLayout. On the .NET Compact Framework 1.0 this value is generated by taking the file name for the application's primary module.
Mono 0.25 or higher
none
Microsoft Shared Source CLI 1.0
-
FileSystemWatcher
SSCLI 1.0 does not support the System.IO.FileSystemWatcher class. As a result, the DOMConfiguratorAttribute.Watch property and the DOMConfigurator.ConfigureAndWatch methods are not available. Watching changes to the log4net configuration file is not supported on SSCLI 1.0.
-
UserName
SSCLI 1.0 does not support the System.Security.Principal.WindowsIdentity class. This is used to capture the current thread's user identity. Therefore the LoggingEvent.UserName property will return the value "NOT AVAILABLE".
-
Identity
SSCLI 1.0 does not support the System.Security.Principal.IPrincipal interface. This is used to capture the current thread's user identity. Therefore the LoggingEvent.Identity property will return the value "NOT AVAILABLE".