Repository: logging-log4net
Updated Branches:
  refs/heads/pr/old/29 [created] ea259c6bf
  refs/heads/pr/old/32 [created] 3f428edaf
  refs/heads/pr/old/40 [created] a847990ce
  refs/heads/pr/old/43 [created] 1a8eb94da
  refs/heads/pr/old/45 [created] 4ee46ecff
Updated Tags:  refs/tags/1.2.13RC1 [created] 6dc3da926


Add extension source project


Project: http://git-wip-us.apache.org/repos/asf/logging-log4net/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4net/commit/3f428eda
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4net/tree/3f428eda
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4net/diff/3f428eda

Branch: refs/heads/pr/old/32
Commit: 3f428edaf7a82ab6091b216039debd94db729bd1
Parents: 5e66799
Author: Peter Jas <[email protected]>
Authored: Sun Aug 21 00:14:53 2016 +0000
Committer: Dominik Psenner <[email protected]>
Committed: Thu Jun 22 22:11:35 2017 +0200

----------------------------------------------------------------------
 .../AspNetExtensions.cs                         |  48 +++++++++
 .../log4net.Extensions.Logging/Log4NetLogger.cs | 101 +++++++++++++++++++
 .../Log4NetLoggerProvider.cs                    |  31 ++++++
 .../log4net.Extensions.Logging/project.json     |  30 ++++++
 global.json                                     |   3 +
 netstandard/global.json                         |   3 -
 netstandard/log4net/project.json                |   1 +
 7 files changed, 214 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4net/blob/3f428eda/extensions/log4net.Extensions.Logging/log4net.Extensions.Logging/AspNetExtensions.cs
----------------------------------------------------------------------
diff --git 
a/extensions/log4net.Extensions.Logging/log4net.Extensions.Logging/AspNetExtensions.cs
 
b/extensions/log4net.Extensions.Logging/log4net.Extensions.Logging/AspNetExtensions.cs
new file mode 100644
index 0000000..8d2ba5d
--- /dev/null
+++ 
b/extensions/log4net.Extensions.Logging/log4net.Extensions.Logging/AspNetExtensions.cs
@@ -0,0 +1,48 @@
+using System;
+using System.IO;
+using System.Reflection;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Logging;
+using log4net.Config;
+using log4net.Core;
+
+namespace log4net.Extensions.Logging
+{
+    /// <summary>
+    /// Helpers for ASP.NET Core
+    /// </summary>
+    public static class AspNetExtensions
+    {
+
+        /// <summary>
+        /// Enable log4net as logging provider in ASP.NET Core.
+        /// </summary>
+        /// <param name="factory"></param>
+        /// <returns>Instance of <c>ILoggerFactory</c></returns>
+        public static ILoggerFactory AddLog4Net(this ILoggerFactory factory, 
Type type)
+        {
+            using (var provider = new Log4NetLoggerProvider(type))
+            {
+                factory.AddProvider(provider);
+            }
+
+            return factory;
+        }
+
+        /// <summary>
+        /// Apply log4net configuration from XML config.
+        /// </summary>
+        /// <param name="env"></param>
+        /// <param name="configFileRelativePath">relative path to log4net 
configuration file.</param>
+        /// <returns>Instance of <c>ILoggerFactory</c></returns>
+        public static void ConfigureLog4Net(this IHostingEnvironment env, 
string configFileRelativePath, Type type)
+        {
+            GlobalContext.Properties["appRoot"] = env.ContentRootPath;
+
+            var fileName = Path.Combine(env.ContentRootPath, 
configFileRelativePath);
+            var repository = 
LoggerManager.RepositorySelector.GetRepository(type.GetTypeInfo().Assembly);
+
+            XmlConfigurator.Configure(repository, new FileInfo(fileName));
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4net/blob/3f428eda/extensions/log4net.Extensions.Logging/log4net.Extensions.Logging/Log4NetLogger.cs
----------------------------------------------------------------------
diff --git 
a/extensions/log4net.Extensions.Logging/log4net.Extensions.Logging/Log4NetLogger.cs
 
b/extensions/log4net.Extensions.Logging/log4net.Extensions.Logging/Log4NetLogger.cs
new file mode 100644
index 0000000..98e1faa
--- /dev/null
+++ 
b/extensions/log4net.Extensions.Logging/log4net.Extensions.Logging/Log4NetLogger.cs
@@ -0,0 +1,101 @@
+using System;
+using Microsoft.Extensions.Logging;
+using log4net;
+
+namespace log4net.Extensions.Logging
+{
+    public class Log4NetLogger : Microsoft.Extensions.Logging.ILogger
+    {
+        private readonly ILog _logger;
+
+        public Log4NetLogger(Type type)
+        {
+            _logger = LogManager.GetLogger(type);
+        }
+
+        /// <summary>
+        /// Writes a log entry.
+        /// </summary>
+        /// <param name="logLevel">Entry will be written on this level.</param>
+        /// <param name="eventId">Id of the event.</param>
+        /// <param name="state">The entry to be written. Can be also an 
object.</param>
+        /// <param name="exception">The exception related to this 
entry.</param>
+        /// <param name="formatter">Function to create a <c>string</c> message 
of the <paramref name="state"/> and <paramref name="exception"/>.</param>
+        public void Log<TState>(LogLevel logLevel, EventId eventId, TState 
state, Exception exception, Func<TState, Exception, string> formatter)
+        {
+            if (!IsEnabled(logLevel))
+            {
+                return;
+            }
+            if (formatter == null)
+            {
+                throw new ArgumentNullException(nameof(formatter));
+            }
+
+            var message = formatter(state, exception);
+
+            switch (logLevel)
+            {
+                case LogLevel.Trace:
+                case LogLevel.Debug:
+                    _logger.Debug(message, exception);
+                    break;
+                case LogLevel.Information:
+                    _logger.Info(message, exception);
+                    break;
+                case LogLevel.Warning:
+                    _logger.Warn(message, exception);
+                    break;
+                case LogLevel.Error:
+                    _logger.Error(message, exception);
+                    break;
+                case LogLevel.Critical:
+                    _logger.Fatal(message, exception);
+                    break;
+                case LogLevel.None:
+                    break;
+                default:
+                    _logger.Warn($"Encountered unknown log level {logLevel}, 
writing out as Debug.");
+                    _logger.Debug(message, exception);
+                    break;
+            }
+        }
+
+        /// <summary>
+        /// Checks if the given <paramref name="logLevel"/> is enabled.
+        /// </summary>
+        /// <param name="logLevel">level to be checked.</param>
+        /// <returns><c>true</c> if enabled.</returns>
+        public bool IsEnabled(LogLevel logLevel)
+        {
+            switch (logLevel)
+            {
+                case LogLevel.Trace:
+                case LogLevel.Debug:
+                    return _logger.IsDebugEnabled;
+                case LogLevel.Information:
+                    return _logger.IsInfoEnabled;
+                case LogLevel.Warning:
+                    return _logger.IsWarnEnabled;
+                case LogLevel.Error:
+                    return _logger.IsErrorEnabled;
+                case LogLevel.Critical:
+                    return _logger.IsFatalEnabled;
+                case LogLevel.None:
+                    return false;
+                default:
+                    throw new ArgumentException($"Unknown log level 
{logLevel}.", nameof(logLevel));
+            }
+        }
+
+        /// <summary>
+        /// Begins a logical operation scope.
+        /// </summary>
+        /// <param name="state">The identifier for the scope.</param>
+        /// <returns>An IDisposable that ends the logical operation scope on 
dispose.</returns>
+        public IDisposable BeginScope<TState>(TState state)
+        {
+            return null; // TODO: Figure out what to do here?
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4net/blob/3f428eda/extensions/log4net.Extensions.Logging/log4net.Extensions.Logging/Log4NetLoggerProvider.cs
----------------------------------------------------------------------
diff --git 
a/extensions/log4net.Extensions.Logging/log4net.Extensions.Logging/Log4NetLoggerProvider.cs
 
b/extensions/log4net.Extensions.Logging/log4net.Extensions.Logging/Log4NetLoggerProvider.cs
new file mode 100644
index 0000000..a2d8964
--- /dev/null
+++ 
b/extensions/log4net.Extensions.Logging/log4net.Extensions.Logging/Log4NetLoggerProvider.cs
@@ -0,0 +1,31 @@
+using System;
+using Microsoft.Extensions.Logging;
+
+namespace log4net.Extensions.Logging
+{
+    public class Log4NetLoggerProvider : 
IDisposable,Microsoft.Extensions.Logging.ILoggerProvider
+    {
+       private readonly Type _type;
+
+        public Log4NetLoggerProvider(Type type)
+        {
+               _type = type;
+        }
+
+        /// <summary>
+        /// Create a logger with the name <paramref name="name"/>.
+        /// </summary>
+        /// <param name="name">Name of the logger to be created.</param>
+        /// <returns>New Logger</returns>
+        public Microsoft.Extensions.Logging.ILogger CreateLogger(string name)
+        {
+            return new Log4NetLogger(_type);
+        }
+
+        /// <summary>
+        /// Cleanup
+        /// </summary>
+        public void Dispose()
+        { }
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4net/blob/3f428eda/extensions/log4net.Extensions.Logging/log4net.Extensions.Logging/project.json
----------------------------------------------------------------------
diff --git 
a/extensions/log4net.Extensions.Logging/log4net.Extensions.Logging/project.json 
b/extensions/log4net.Extensions.Logging/log4net.Extensions.Logging/project.json
new file mode 100644
index 0000000..e7cde51
--- /dev/null
+++ 
b/extensions/log4net.Extensions.Logging/log4net.Extensions.Logging/project.json
@@ -0,0 +1,30 @@
+{
+  "version": "1.0.0-*",
+
+  "packOptions": {
+    "requireLicenseAcceptance": false,
+    "tags": [ "logging", "log", "tracing", "logfiles", "apache", "aspnet" ],
+    "iconUrl": "https://logging.apache.org/img/feather.gif";,
+    "licenseUrl": 
"https://raw.githubusercontent.com/apache/log4net/trunk/LICENSE";,
+    "projectUrl": "https://github.com/apache/log4net";,
+    "repository": {
+      "type": "git",
+      "url": "git://git.apache.org/log4net.git"
+    }
+  },
+
+  "buildOptions": {
+    "debugType": "portable"
+  },
+
+  "dependencies": {
+      "log4net": { "target": "project" },
+      "Microsoft.Extensions.Logging": "1.0.0",
+      "Microsoft.AspNetCore.Hosting": "1.0.0"
+  },
+
+  "frameworks": {
+    "net451": {},
+    "netstandard1.3": {}
+  }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4net/blob/3f428eda/global.json
----------------------------------------------------------------------
diff --git a/global.json b/global.json
new file mode 100644
index 0000000..f3f8e98
--- /dev/null
+++ b/global.json
@@ -0,0 +1,3 @@
+{
+    "projects": [ "netstandard", "extensions" ]
+}

http://git-wip-us.apache.org/repos/asf/logging-log4net/blob/3f428eda/netstandard/global.json
----------------------------------------------------------------------
diff --git a/netstandard/global.json b/netstandard/global.json
deleted file mode 100644
index 200ddfd..0000000
--- a/netstandard/global.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "projects": [ "log4net", "log4net.tests" ]
-}

http://git-wip-us.apache.org/repos/asf/logging-log4net/blob/3f428eda/netstandard/log4net/project.json
----------------------------------------------------------------------
diff --git a/netstandard/log4net/project.json b/netstandard/log4net/project.json
index 51731de..003501e 100644
--- a/netstandard/log4net/project.json
+++ b/netstandard/log4net/project.json
@@ -1,6 +1,7 @@
 {
   "name": "log4net",
   "version": "3.0.0",
+
   "frameworks": {
     "netstandard1.3": {
       "buildOptions": {

Reply via email to