From 196d32105b5e2b57e6ef52557794a40d5f5a054e Mon Sep 17 00:00:00 2001 From: markpollack Date: Thu, 3 Dec 2009 22:29:12 +0000 Subject: [PATCH] SPRNET-1286 - Provide implementation of Apache.NMS.ITrace to merge NMS logging stream with Common.Logging stream. --- .../Messaging/Nms/Core/NmsTrace.cs | 160 ++++++++++++++++++ .../Messaging/Nms/Support/NmsAccessor.cs | 9 + .../Spring.Messaging.Nms.2008.csproj | 4 +- 3 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 src/Spring/Spring.Messaging.Nms/Messaging/Nms/Core/NmsTrace.cs diff --git a/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Core/NmsTrace.cs b/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Core/NmsTrace.cs new file mode 100644 index 00000000..f4d0dcc2 --- /dev/null +++ b/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Core/NmsTrace.cs @@ -0,0 +1,160 @@ +#region License + +/* + * Copyright 2002-2009 the original author or authors. + * + * Licensed 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. + */ + +#endregion + +using Apache.NMS; +using Common.Logging; + +namespace Spring.Messaging.Nms.Core +{ + /// + /// Implemention of NMS ITrace interface that will log NMS messages to Common.Logging. + /// + /// Registering of this class is done by default in NmsTemplate and SimpleMessageListenerContainer if the value + /// of Apache.NMS.Tracer.Trace is null, indicating it was not set. + /// + /// Mark Pollack + public class NmsTrace : ITrace + { + #region Logging Definition + + private readonly ILog log; + + #endregion + + /// + /// Initializes a new instance of the class. The log name used is typeof(NmsTrace). + /// + public NmsTrace() + { + log = LogManager.GetLogger(typeof(NmsTrace)); + } + + + /// + /// Initializes a new instance of the class. + /// + /// The log instance to use for logging. + public NmsTrace(ILog log) + { + this.log = log; + } + + /// + /// Logs message at Debug Level. + /// + /// The message. + public void Debug(string message) + { + log.Debug(message); + } + + /// + /// Logs message at Info Level. + /// + /// The message. + public void Info(string message) + { + log.Info(message); + } + + /// + /// Logs message at Warn Level. + /// + /// The message. + public void Warn(string message) + { + log.Warn(message); + } + + /// + /// Logs message at Error Level. + /// + /// The message. + public void Error(string message) + { + log.Error(message); + } + + /// + /// Logs message at Fatal Level. + /// + /// The message. + public void Fatal(string message) + { + log.Fatal(message); + } + + /// + /// Gets a value indicating whether the debug log level is enabled. + /// + /// + /// true if this instance is debug enabled; otherwise, false. + /// + public bool IsDebugEnabled + { + get { return log.IsDebugEnabled; } + } + + /// + /// Gets a value indicating whether the info log level is enabled. + /// + /// + /// true if this instance is info enabled; otherwise, false. + /// + public bool IsInfoEnabled + { + get { return log.IsInfoEnabled; } + } + + /// + /// Gets a value indicating whether the warn log level is enabled. + /// + /// + /// true if this instance is warn enabled; otherwise, false. + /// + public bool IsWarnEnabled + { + get { return log.IsWarnEnabled; } + } + + /// + /// Gets a value indicating whether the error log level is enabled. + /// + /// + /// true if this instance is error enabled; otherwise, false. + /// + public bool IsErrorEnabled + { + get { return log.IsErrorEnabled; } + } + + /// + /// Gets a value indicating whether the fatal log level is enabled. + /// + /// + /// true if this instance is fatal enabled; otherwise, false. + /// + public bool IsFatalEnabled + { + get { return log.IsFatalEnabled; } + } + } + +} \ No newline at end of file diff --git a/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Support/NmsAccessor.cs b/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Support/NmsAccessor.cs index 4d088d95..dbe04340 100644 --- a/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Support/NmsAccessor.cs +++ b/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Support/NmsAccessor.cs @@ -20,6 +20,7 @@ using System; using Common.Logging; +using Spring.Messaging.Nms.Core; using Spring.Objects.Factory; using Apache.NMS; @@ -134,6 +135,14 @@ namespace Spring.Messaging.Nms.Support { throw new ArgumentException("ConnectionFactory is required"); } + if (Tracer.Trace == null) + { + if (logger.IsTraceEnabled) + { + logger.Trace("Setting Apache.NMS.Tracer.Trace to default implementation that directs output to Common.Logging"); + } + Tracer.Trace = new NmsTrace(); + } } /// diff --git a/src/Spring/Spring.Messaging.Nms/Spring.Messaging.Nms.2008.csproj b/src/Spring/Spring.Messaging.Nms/Spring.Messaging.Nms.2008.csproj index 65fd4eff..efdf0f14 100644 --- a/src/Spring/Spring.Messaging.Nms/Spring.Messaging.Nms.2008.csproj +++ b/src/Spring/Spring.Messaging.Nms/Spring.Messaging.Nms.2008.csproj @@ -21,7 +21,8 @@ 4 Spring.Messaging.Nms.xml true - + + pdbonly @@ -74,6 +75,7 @@ +