2010-04-15 Jaroslaw Kowalski * Added Silverlight 4.0 GDR support and updated .NET Framework 4.0 build number to reflect the final release. 2010-03-17 Jaroslaw Kowalski * Fixed issue mentioned in bug #4182 - after refactoring XmlTextWriter to XmlWriter.Create() ${log4jxmlevent} stopped working. Added regression tests. 2010-03-13 Jaroslaw Kowalski * NLog2-preview1 release 2010-03-12 Jaroslaw Kowalski * Refactored project structure for client SKU support. On .NET 3.5 and 4.0 there are now two assemblies: NLog.dll (client-only) and NLog.Extended.dll (extended SKU) * Removed StyleCop exclusion for usings-must-be-in-namespace and fixed all sources * Removed GetEstimatedBufferSize() for layout renderers - now computed automatically and faster * Added [AppDomainFixedOutput] and [ThreadAgnostic] attributes for marking layouts and renderers - removed IsAppDomainFixed() and IsVolatile() and centralized its computation * Added IUsesStackTrace and removed other methods of determining whether stack trace is needed (should be more robust) * Fixed a bug where output from C++ was not properly serialized in log4j XML format (nullref) * Changed Initialize() and Close() to be protected * Refactored ObjectGraphScanner for better usage * Removed micro-optimizations which were not really needed (FileTarget) * Added IRenderable interface (common to layouts and renderers) * Refactored solutions to one-per-framework 2010-02-21 Jaroslaw Kowalski * Added 'build checkinsuite' option which cleans and builds everything then runs tests and presents a synthetic view of the results. * Added DumpTestResultSummary tool which displays readable summary of a *.TRX file * Added TRX output to SilverlightConsoleRunner. * Fixed bug #3990 - Stack overflow in NLogViewerTarget constructor * Changed LoggingRule.Targets and LoggingRule.ChildRules to use IList instead of ICollection * Added Makefile for building and running tests on Unix 2010-02-20 Jaroslaw Kowalski * Fixed handling of StackFrame/StackTrace in Silverlight - updated unit tests to deal with that. * All unit tests are now passing on SL2 and SL3 and Compact Framework * Made Silverlight unit tests runnable from VS directly. * Disabled filename-related stuff from Silverlight stacktrace reporting. * Added support for ${exception:method} on Silverlight by parsing the stack frame. * Fixed a bug in .NET Compact Framework 2.0 support where read-only properties were not discovered correctly (works fine for other versions). 2009-11-01 Jaroslaw Kowalski * Added skeleton for LogReceiverService which sends parameterized log messages in batches to a web service (WCF/SOAP). 2009-10-24 Jaroslaw Kowalski * NLog now passes StyleCop 4.3.2.1 verification using all but couple of rules. 2009-10-21 Jaroslaw Kowalski * Added unit test projects for Compact Framework and Silverlight (based on SilverlightUnitTestFramework from MSDN Code Gallery). * Fixed tests to exclude unsupported framework features for SL and CF. * More code cleanup. * Simple console runner for Silverlight. * All frameworks build fine now at this point (build.cmd). * Verified that unit tests are passing 100% for .NET FX 3.5 and 2.0. 2009-10-10 Jaroslaw Kowalski * Removed PopulateLayouts across the source code and replaced it with a centralized reflection-based utility. * Introduced INLogConfigurationItem which is used to mark classes which should be scanned for Layouts. * Introduced ISupportsInitialize which is used to centralize Initialize and Close handling across the code. * Centralized RequitedParameterAttribute handling. * Removed support for NLOG_GLOBAL_CONFIG_FILE variable and NLog.dll.nlog file 2009-09-19 Jaroslaw Kowalski * Added binary compatibility test with NLog v1.0 * Deprecated LogEventInfo.Context - replaced with LogEventInfo.Properties which uses generic. Added verification that binary compatibility is preserved. 2009-09-18 Jaroslaw Kowalski * Top-level directory cleanup: - moved *.sln files to "src" - moved Installer to tools/Installer - moved webtest to 'tests' * Merged NLog.ComInterop.dll with NLog.dll * VS project now supports multitargeting * Upgraded NLogC project to C++/CLI * Added VS project and solution for NLogC * Added protection from null DeclaringType (occurs in C++) Issue: http://nlog.codeplex.com/WorkItem/View.aspx?WorkItemId=2519 * Fixed stack trace computation in case of excessive inlining (x64) Issue: http://nlog.codeplex.com/WorkItem/View.aspx?WorkItemId=2518 * Cleaned up InternalLogger configuration * More FxCop-driven cleanup * Fixed invalid format parameters in NLogC * Switched to use _vsnwprintf_s * Added ConfigureFromXml API to NLogC 2008-11-22 Jaroslaw Kowalski * Added WrapperLayoutRendererBase for wrapper layout renderer and LowerCaseLayoutRendererWrapper, PaddngLayoutRendererWrapper, UpperCaseLayoutRendererWrapper, ReplaceLayoutRendererWrapper * Added AmbientPropertyAttribute for decorating ambient properties. * Added LoggingRule.Levels * Refactored XmlLoggingConfiguration to use XmlReader (available everywhere) instead of XmlElement * Replace 0,1,2 constants for specifying stack trace usage with StackTraceUsage enumeration * Moved GDC, MDC and NDC to a separate namespace and obsoleted short names * Added special case for converting encoding names to Encoding objects in the configurator * Removed ApplyPadding() method - padding and other common aspects are now abstracted as WrapperLayoutRenderers * Refactored ${rot13} to become a wrapper layout renderer (config-level compatible) * Removed LayoutRendererAttribute.IgnoresPadding and UsingLogEventInfo * Renamed Layout.Initialized as IsInitialized * Refactored configuration file search algorithm * Added some more source-level documentation * Removed LogLevel.UppercaseName and LogLevel.LowercaseName * Removed TargetAttribute.IgnoresLayout * Work-in-progress on MakeNLogDoc 2008-06-21 Jaroslaw Kowalski * First major refactoring towards NLog v2. * moved certain classes from NLog namespace to NLog.Config, NLog.Targets, NLog.Layouts, NLog.LayoutRenderers * renamed Layout to SimpleLayout * turned ILayout interface into Layout base class * removed CompiledLayout pattern all over the place * removed [AcceptsLayout] by replacing all string properties with actual Layouts (added implicit conversion from string makes the usage clean) * removed [AcceptsCondition] by replacing all string properties with ConditionExpression (added implicit conversion from string makes the usage clean) * removed most of platform detection logic (will use conditional compilation exclusively in v2) * removed NLog.*Factory classes and aggregated all factories NLog.Config.NLogFactories using common interface * removed *Collection and *Dictionary classes and replaced them with generics * public APIs that used to expose *Collection are now ICollection or IList * refactored LogEventInfo into multiple classes for formatted and unformatted events * added delayed evaluation delegate (LogMessageDelegate) and added logging method overloads that accept it: Usage (C# 3.0 using lambda syntax): logger.Info(() => "this is my message, x=" + x + ", y=" + y); Usage (C# 2.0 using inline delegate syntax) logger.Info(delegate { return "this is my message, x=" + x + ", y=" + y }); * removed VS 2003 project files * regenerated Logger.cs to use generics * configuration-file-based usage remains unchanged * removed support for .NET 1.x and .NET CF 1.x and many hacks and workarounds to support them ================================================================================ 2006-09-18 Jaroslaw Kowalski * Preparing for 1.0 release 2006-09-15 Jaroslaw Kowalski * Added MaxMessageSize (default: 65000) and OnOverflow (default:Split) to the Network target 2006-09-12 Jaroslaw Kowalski * Implemented headers and footers for the File target. CAUTION: NLog automatically writes footers for files that have not been written for 2 days (48 hours). This is done do conserve memory for long-running processes that create lots of log files. 2006-09-11 Jaroslaw Kowalski * Added publisher policy generation 2006-09-07 Jaroslaw Kowalski * Enabled DatabaseTarget.ConnectionString to include layouts. 2006-09-04 Jaroslaw Kowalski * Build number is synchronized with SVN number (hopefully) * Fixed LayoutRenderer.ApplyPadding() null handling * First attempt at publisher policy generation 2006-09-01 Jaroslaw Kowalski * Fixed File target for Windows 98 2006-08-25 Jaroslaw Kowalski * Added examples of inheriting from Logger class and wrapping it 2006-08-24 Jaroslaw Kowalski * Added infrastructure to create your own logger types inheriting from Logger: LogManager.GetLogger(string name, Type type) and LogManager.GetCurrentClassLogger(Type type) LogFactory.GetLogger(string name, Type type) and LogFactory.GetCurrentClassLogger(Type type) * Added ${event-context} layout renderer that extracts information from LogEventInfo.Context * Added eventID and categoryID parameters to EventLog targets. * Added LogManager that manages logger instances of LoggerType where LoggerType : Logger * Added missing code documentation * Fixed Network target to work properly with IPV6 * Added example ${rot13} layout renderer - that demonstrates how wrapper layout renderers can be written. * Added support for DEFAULT nested layout parameters. You can now write: ${file-contents:${basedir}/file.txt} ${rot13:URYYB} 2006-08-03 Jaroslaw Kowalski * MANY CHANGES TO CLEAN UP APIs AND ENSURE EXTENSIBILITY - MAY TAKE SOME TIME TO STABILIZE AGAIN * Added ${file-contents} layout renderer which inserts file contents. * Added [DefaultParameter] attribute which allows for nameless parameters to layout renderers: ${aspnet-application} ${aspnet-request} ${aspnet-session} ${date} ${environment} ${file-contents} ${gdc} ${mdc} ${process-info} ${special-folder} ${asp-application} ${asp-request} ${asp-session} * Added ILayoutWithHeaderAndFooter.cs for layouts that support header/footer (such as CSV Layout, more to come) * The following targets have been enhanced to support headers/footers: Console ColoredConsole Debugger * Added NLogConfigurationException which is thrown instead of CLR exceptions when the configuration fails * Simplified XmlLoggingConfiguration by splitting large methods and moving common functionality to PropertyHelper * Added Layouts/LayoutWithHeaderAndFooter.cs and TargetWithLayoutHeaderAndFooter.cs * Added MailTarget.AddNewLines to insert new lines between header/lines/footer * Added PopulateLayouts() method to ILayout * BREAKING CHANGE: Changed the default value of FileTarget.OpenFileCacheTimeout to -1 * Added support for nested layout renderers. Used in ${file-contents} ${file-contents:fileName=${basedir}/aaa.txt} This required a large rewrite of the parsing engine. Hopefully the test cases cover all possible situations. * Removed LogEventInfo.Empty and replaced with LogEventInfo.CreateNullEvent() * Added CsvLayout.WithHeader which can be used to disable CSV header. * Added VJSharp and Web item templates. Updated the installer to support VWD Express 2005. * Enhanced XSD Schema generation by properly generating abstract and layout properties. * Some more unit tests. 2006-07-31 Maarten Claes * Changed RichTextBox Target to be thread safe. Uses delegate to log to RichTextBox * Same changes made to FormControl Target 2006-07-22 Jaroslaw Kowalski * Fixed NLogViewer and Chainsaw targets * New NLog.Benchmark that uses code generation and compilation to create more "clean" environment. * Added ${gc} which can be used to get the GC statistics (very limited) * Added ${processinfo} which can be used to extract the performance information about the current process (possibly others in the future as well) * Added ${gc} which can be used to get the GC statistics (very limited) * Added Initialize() and Close() to the LayoutRender class * Added optimized CurrentTimeGetter which is way faster than DateTime.Now * Some small optimizations 2006-07-18 Jaroslaw Kowalski * Added ImpersonatingWrapper which temporarily changes the credentials for the duration of the write. * Moved the implementation of LogManager to a reusable LogFactory while maintaining its public interface. You can now easily have a private LogManager for an assembly. 2006-07-17 Jaroslaw Kowalski * Synchronized Visual Studio solutions to source code directories. Now part of the build process. 2006-07-14 Jaroslaw Kowalski * Added proper camelCasing to the web build process * Fix for multiple email addresses being passed in To,CC and BCC fields under .NET 2.0 (reported by Pawel Parzychowski) 2006-07-07 Jaroslaw Kowalski * BREAKING CHANGE - Added NLog.ILayout which Layout implements to allow other layout types (such as CSV-escaped, HTML-colored, XML-escaped, ANSI-colored) to be implemented NLog.Layout became sealed. * BREAKING CHANGE - Added NLog.TargetWithLayout, removed Layout and CompiledLayout from NLog.Target * BREAKING CHANGE - Removed CSVFile target, converted examples to File + CsvLayout * Added pluggable layouts (CSV, Log4JXml), LayoutFactory and LayoutAttribute. The syntax is: Of course the old syntax is still supported for simple layouts: * BREAKING CHANGE - FileTarget.KeepFileOpen is back to the default of false. Thankfully we now have so this can be easily overriden. 2006-07-05 Maciej Figatowski * Added FilterResult.IgnoreFinal and FilterResult.LogFinal which suppress processing of further rules if the filter matches. 2006-07-04 Jaroslaw Kowalski * Added NLog_Init() and NLog_InitLocal() APIs to NLogC 2006-07-04 Marcin Krupinski * added FormControl target that logs to Text property of any Windows.Forms.Control * added RichTextBox target with row- and word coloring that logs to RichTextBox 2006-06-30 Jaroslaw Kowalski * added ${tempdir} and ${specialfolder} 2006-06-29 Jaroslaw Kowalski * implemented that specifies default values for all targets in the section 2006-06-25 Jaroslaw Kowalski * implemented that wraps all targets in section with the specified wrapper. 2006-06-23 Jaroslaw Kowalski * fixed some race conditions in the Network target * added NetworkTarget.Close() * added CSVFile target which does proper CSV formatting (multi-line and special character quoting) 2006-06-14 Jaroslaw Kowalski * added * fixed autoReload to keep monitoring the file if the reloaded file has an error * added Logger.Log(LogEventInfo) overload * added Logger.Log(Type,LogEventInfo) overload * added LoggerReconfiguredDelegate and Logger.LoggerReconfigured event 2006-06-13 Jaroslaw Kowalski * Added BufferedWrapper.FlushTimeout * Added some unit tests * Fixed AsyncWrapper not closing files on termination. 2006-06-11 Jaroslaw Kowalski * Added FileTarget.LineEnding * Added some unit tests * Added Layout.Escape() which escapes ${ with ${literal:text=${} 2006-06-04 Jaroslaw Kowalski * Fixed compilation, schema generationa and website building on Linux/Mono. * Updated version number to 1.0 (preparing for the release) * Optimized file appenders * added support for flags-type enumerations * Benchmark updates * Configurable stacktrace/separator 2006-05-31 Jaroslaw Kowalski * Grammar issues (thanks Ron) * Added "separator" option to the ${stacktrace} layout renderer. 2006-05-30 Inez Korczynski * Implementation of SOAP 1.2 and POST for WebService target. 2006-05-28 Jaroslaw Kowalski * Preliminary implementation of SOAP 1.1 for WebService target. * Added deleteOldFileOnStartup to the File target * Added replaceFileContentsOnEachWrite to the File target * We now have examples for 100% of targets, both ready-to-run VS2005 projects and configuration files. 2006-05-26 Jaroslaw Kowalski * Prepared ready-to-run example projects for VS2005 that describe most targets. * Added WebService target stub. 2006-05-25 Jaroslaw Kowalski * Implemented AsyncWrapper for .NET CF using the Timer class * Refactored file watching - should speed up non-logging by 100% 2006-05-20 Jaroslaw Kowalski * Added support for VC#Express and VBExpress to the installer. * Added VS2005 C# and VB.NET code snippet (nlogger) to quickly insert logger creation statement * Added VS2005 item templates for NLog configuration. Updated the installer. * Removed some stupid Console.Write() * Updated MailTarget.SmtpAuthentication to be SmtpAuthenticationMode instead of a string. 2006-05-15 Jaroslaw Kowalski * Fixed File target causing delay at exit. * Added generation of NLog.xsd schema for Intellisense. 2006-05-15 Jaroslaw Kowalski * Reverted to NDoc 1.3.1 running under CLR 2.0 for docgen. 2006-05-10 Jaroslaw Kowalski * (hopefully) Fixed OpenFileCacheTimeout taking too much CPU 2006-05-05 Jaroslaw Kowalski * Completely rebuilt the installer. * Reworked the way documentation is generated. We now use NDoc 2.0 Alpha 3k and there are still some minor issues. * Separate compilation of NLog for all supported frameworks * Cleaned up the code, now compiles with warnaserror="true" 2006-04-22 Jaroslaw Kowalski * Merged NLog.Win32.dll, NLog.DotNet.dll, NLog.Unix.dll and NLog.Mono.dll into one assembly NLog.dll * Added attributes which mark support for particular runtimes and OSes 2006-04-18 Jaroslaw Kowalski * Added LayoutRenderer.IsAppDomainFixed() and an optimization to turn such things into literals. * Added LoggingConfiguration.GetConfiguredNamedTargets() API * BREAKING CHANGE - Completely restructured the way File target works. The new structure is based on Streams instead of StreamWriters and enables archiving (kind of similar to "rolling file appender" from log4net world, but supporting multiple files at a time) * BREAKING CHANGE - removed some properties which accepted strings. Now replaced with enums. * Added caching to File target to optimize the number file open/close operations * Added an option for multiple processes to append to the same OPEN file in a synchronized manner. Unixes get this for free, but Win32 requires you to use mutexes to synchronize file access. * Enabled the use of enumerations as parameteters (including docgen) * Added InternalLogger.LogToConsoleError and their config file and environment variable counterparts * Refactored website generation 2006-03-27 Jaroslaw Kowalski * Updated .NET CF project file 2006-03-21 Jaroslaw Kowalski * Fixed a programmatic configuration bug where invalid value was passed to LoggingRule.LoggerNamePattern. Thanks to danieljaysmith - at - excite - dot - com for spotting this. 2006-03-19 Jaroslaw Kowalski * Optimization to defer calling String.Format() until it's really needed. 2006-02-24 Rafal Gwizdala * Add PerfCounter target that increases the PC value by one each time the message is passed to it. * Added FSNormalize option to ${identity} target to strip all characters not allowed in the file names and replace them with underscores. 2006-02-24 Jaroslaw Kowalski * Added config-level option ... to automatically wrap all targets with AsyncWrapper 2006-02-14 Jaroslaw Kowalski * Updated license and email addresses. * Updated assembly version and description for 0.95 release. 2006-02-13 Yuri Mamrukov * Patch to simplify InternalLogger configuration from environment variables and/or App.config settings. Fixes some nasty bug here. 2006-02-13 Jaroslaw Kowalski * Added some docs, moving website to http://www.nlog-project.org/ * Excluded NLogViewer from build and project. * Refactored LoggerImpl to allow for some extensibility in the future. 2006-01-13 Jaroslaw Kowalski * Fixed a serious reentrancy bug which caused all sorts of problems when formatted message included a parameter where ToString did the logging itself. 2005-10-26 Jaroslaw Kowalski * Added ${aspnet-sessionid} to access (guess!) ASP.NET session ID 2005-10-25 Jaroslaw Kowalski * Added ASPNetBufferingWrapper target which buffers and post-processes the entire ASP.NET request (requires you to use the NLogHttpModule) * Added PostFilteringWrapper target which is able to filter log events based on a buffer as a whole. It is possible for example to dump the detailed ( >= Trace level) trace of a request if there was at least one >= Warn event in the buffer, but under normal conditions only output the >= Info levels. * Reworked the way the documentation is generated (we no longer use ugly IFRAMEs and the same method is used to generate the website and the docs) * Added a new conditions language (see conditions.html for more information) which let you write powerful filtering conditions while keeping the syntax natural and readable * Added filter which uses condition expressions * Added examples for the MailTarget and BufferedMailTarget * Fixed Close() behaviour for unnamed targets (like the ones configured by SimpleConfigurator) * Added some more documentation (still some work to do before the release) * Fixed the example for asynchronous Tile target (async="true" is not supported and is replaced by the AsyncWrapper target) 2005-10-21 Jaroslaw Kowalski * Added ${processname}, ${processid} layout renderers * Added GDC (Global Diagnostics Context) and ${gdc} layout renderer which is a global (as opposed to per-thread) version of MDC and ${mdc} 2005-10-11 Jaroslaw Kowalski * Fixed a nullref exception when no config file was present. * Fixed support for CC field in the Mail target 2005-09-29 Jaroslaw Kowalski * Added batch NLogC compilation, added installer and nlogc binary snapshot. * Added authentication options to the Mail target (thanks Ron). 2005-09-28 Jaroslaw Kowalski * Refactored NLogViewer by separating NLogViewer.Interfaces * Added NLogViewer.NDumbsterSmtpReceiver (by Ron Grabowski) * Added support for caching layout results per logEvent which makes them transportable across threads * Renamed Target.Append() method to Write() (how did I forget it?) * Added Target.Write(LogEvent[] manyEvents) for cases where the target can optimize group writes * Added Log4JXmlEvent.cs * Added Wrappers: AsyncWrapper, AutoFlushWrapper, BufferingWrapper, RepeatingWrapper, RetryingWrapper * Some preliminary work on request buffering wrappers. * Added compound targets (fallback, randomize, roundrobin, split) * WARNING: This requires some serious testing. 2005-09-19 Jaroslaw Kowalski * Added ${windows-identity} layout renderer. Restructured the way extensions are loaded (ExtensionUtils). 2005-08-28 Jaroslaw Kowalski * Some work on NLogViewer 2005-08-14 Jaroslaw Kowalski * Fixed #34: Typos in the code prevented Chainsaw target from working properly. * Added #31: MSMQ target * Added #30: EventLog target * Fixed #8: Made Performance Counter layout renderer somewhat more reliable and added a bit of documentation. * Fixed #29: Root logging level support. Added * Massive website, documentation and packaging updates * Added SimpleConfigurator.ConfigureForTargetLogging() and SimpleConfigurator.ConfigureForFileLogging() 2005-08-10 Jaroslaw Kowalski * Fixed #28: Documentation threading safety statement bug 2005-08-08 Jaroslaw Kowalski * Added #27: Debugger target. * Fixed #26: ${callsite} not working with database parameters 2005-07-27 Jaroslaw Kowalski * Added #24: ${logger:shortname=true} option. 2005-07-23 Jaroslaw Kowalski * Fixed #23: ${callsite} doesn't work with MethodCall target and NLogViewer target 2005-07-14 Jaroslaw Kowalski * Fixed #22: Connection string builder omits ; after Server parameter 2005-07-11 Jaroslaw Kowalski * added an overridable FileTarget.WriteToFile method to allow for subclassing of File target to support encryption 2005-07-09 Jaroslaw Kowalski * fixed the Trace target in Release mode by defining TRACE symbol 2005-07-06 Jaroslaw Kowalski * added a new Trace level, more verbose than the Debug 2005-07-05 Jaroslaw Kowalski * fixed VS.NET Compact Framework project file 2005-06-28 Jaroslaw Kowalski * added support for configuration element * added experimental PerformanceCounter layout renderer. 2005-06-25 Jaroslaw Kowalski * fixed the Trace target in Release mode by defining TRACE symbol 2005-06-23 Jaroslaw Kowalski * added some minimal VB.NET test code * added some meaningful error message when a named target is not defined. 2005-06-20 Jaroslaw Kowalski * fixed bugs related to ${asp-request:cookie} and ${aspnet-request:cookie} and many other small bugs 2005-06-17 Jaroslaw Kowalski * fixes for case-insensitive parsing of the config files. * added IgnoreCase option to filters * added unit tests that verify case-insensitivity. * added many more unit tests (we have now over 70% coverage) 2005-06-16 Jaroslaw Kowalski * fixed the filter configuration bug as reported by Ron Grabowski 2005-06-10 Jaroslaw Kowalski * added StackTrace layout renderer, 3 different logging formats * added NewLine layout renderer * added async="true" to the "File" target to improve logging speed by writing messages in a separate thread and optimizing file access. * fixed NLogC compilation * refactored NLogViewer to use log4j schema instead of inventing my own * fixed CompactFramework build 2005-06-09 Jaroslaw Kowalski * NLog v0.9 has been released.