Skip to content

Commit

Permalink
Decouple LoggingConfiguration from XmlLoggingConfiguration (#3449)
Browse files Browse the repository at this point in the history
  • Loading branch information
304NotModified committed Jun 5, 2019
1 parent 6b853f4 commit 248128f
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 2 deletions.
43 changes: 43 additions & 0 deletions src/NLog/Config/IInitializeSucceeded.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
//
// Copyright (c) 2004-2019 Jaroslaw Kowalski <jaak@jkowalski.net>, Kim Christensen, Julian Verdurmen
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * Neither the name of Jaroslaw Kowalski nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
// THE POSSIBILITY OF SUCH DAMAGE.
//

namespace NLog.Config
{
internal interface IInitializeSucceeded
{
/// <summary>
/// Did the Initialize Succeeded? <c>true</c>= success, <c>false</c>= error, <c>null</c> = initialize not started yet.
/// </summary>
bool? InitializeSucceeded { get; }
}
}
2 changes: 1 addition & 1 deletion src/NLog/Config/LoggingConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,7 @@ internal LoggingConfiguration ReloadNewConfig()
//problem: XmlLoggingConfiguration.Initialize eats exception with invalid XML. ALso XmlLoggingConfiguration.Reload never returns null.
//therefor we check the InitializeSucceeded property.

if (newConfig is XmlLoggingConfiguration xmlConfig && xmlConfig.InitializeSucceeded != true)
if (newConfig is IInitializeSucceeded config2 && config2.InitializeSucceeded != true)
{
InternalLogger.Warn("NLog Config Reload() failed. Invalid XML?");
return null;
Expand Down
2 changes: 1 addition & 1 deletion src/NLog/Config/XmlLoggingConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ namespace NLog.Config
/// - This class is thread-safe.<c>.ToList()</c> is used for that purpose.
/// - Update TemplateXSD.xml for changes outside targets
/// </remarks>
public class XmlLoggingConfiguration : LoggingConfigurationParser
public class XmlLoggingConfiguration : LoggingConfigurationParser, IInitializeSucceeded
{
#if __ANDROID__

Expand Down

0 comments on commit 248128f

Please sign in to comment.