nicko 2005/05/31 07:15:32
Modified: examples/net/1.0/Appenders/SampleAppendersApp/cs/src
App.config
Added: examples/net/1.0/Appenders/SampleAppendersApp/cs/src/Appender
MsmqAppender.cs
Log:
Added simple example of MSMQ appender
Revision Changes Path
1.3 +9 -1
logging-log4net/examples/net/1.0/Appenders/SampleAppendersApp/cs/src/App.config
Index: App.config
===================================================================
RCS file:
/home/cvs/logging-log4net/examples/net/1.0/Appenders/SampleAppendersApp/cs/src/App.config,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- App.config 12 Nov 2004 22:36:02 -0000 1.2
+++ App.config 31 May 2005 14:15:32 -0000 1.3
@@ -61,16 +61,24 @@
<appender-ref ref="ColoredConsoleAppender" />
</appender>
+ <appender name="MsmqAppender"
type="SampleAppendersApp.Appender.MsmqAppender, SampleAppendersApp">
+ <queueName value=".\Private$\log-test" />
+ <labelLayout value="LOG [%level] %date" />
+ <layout type="log4net.Layout.PatternLayout"
value="%date [%thread] %-5level %logger - %message%newline" />
+ </appender>
+
<!-- Setup the root category, add the appenders and set the
default level -->
<root>
<level value="ALL" />
+
<appender-ref ref="MessageObjectExpanderAppender" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="MessageBoxAppender" />
<appender-ref ref="FireEventAppender" />
<appender-ref ref="SimpleSmtpAppender" />
+ <appender-ref ref="MsmqAppender" />
</root>
</log4net>
-</configuration>
\ No newline at end of file
+</configuration>
1.1
logging-log4net/examples/net/1.0/Appenders/SampleAppendersApp/cs/src/Appender/MsmqAppender.cs
Index: MsmqAppender.cs
===================================================================
#region Copyright & License
//
// Copyright 2001-2005 The Apache Software Foundation
//
// 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 System;
using System.Messaging;
using log4net.Core;
namespace SampleAppendersApp.Appender
{
public class MsmqAppender : log4net.Appender.AppenderSkeleton
{
private MessageQueue m_queue;
private string m_queueName;
private log4net.Layout.PatternLayout m_labelLayout;
public MsmqAppender()
{
}
public string QueueName
{
get { return m_queueName; }
set { m_queueName = value; }
}
public log4net.Layout.PatternLayout LabelLayout
{
get { return m_labelLayout; }
set { m_labelLayout = value; }
}
override protected void Append(LoggingEvent loggingEvent)
{
if (m_queue == null)
{
if (MessageQueue.Exists(m_queueName))
{
m_queue = new MessageQueue(m_queueName);
}
else
{
ErrorHandler.Error("Queue
["+m_queueName+"] not found");
}
}
if (m_queue != null)
{
Message message = new Message();
message.Label = RenderLabel(loggingEvent);
using(System.IO.MemoryStream stream = new
System.IO.MemoryStream())
{
System.IO.StreamWriter writer = new
System.IO.StreamWriter(stream, new System.Text.UTF8Encoding(false, true));
base.RenderLoggingEvent(writer,
loggingEvent);
writer.Flush();
stream.Position = 0;
message.BodyStream = stream;
m_queue.Send(message);
}
}
}
private string RenderLabel(LoggingEvent loggingEvent)
{
if (m_labelLayout == null)
{
return null;
}
System.IO.StringWriter writer = new
System.IO.StringWriter();
m_labelLayout.Format(writer, loggingEvent);
return writer.ToString();
}
}
}