
Kode ini meminjam cukup banyak dari contoh sebelumnya di sini di Codeproject, tetapi saya mengonversinya menjadi C# dari Visual Basic. Contoh sebelumnya ditulis oleh Philip Liebscher pada tahun 2007 (wow!).
Contoh ini mencakup dua komponen:
Kode untuk aplikasi konsol cukup sederhana:
using System;
using System.Net;
using System.Net.Sockets;
using System.Reflection;
using System.Text;
using log4net;
internal static class UdpLogListener
{
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public static void Main()
{
var Port = 8081; // <-- remember to use the same port in your web/source app.
try
{
var sender = new IPEndPoint(IPAddress.Any, 0);
var client = new UdpClient(Port);
while (true)
{
var buffer = client.Receive(ref sender);
var logLine = Encoding.Default.GetString(buffer);
// The color coded text is written to the console when Log.{level method} is called.
// i.e. Log.Info("my info")
// Optional: Replace your placeholders with whatever you like. [I]=Info, [D]=Debug, etc.
// More detail about placeholders in the UdpAppender config below.
if (logLine.IndexOf("{INFO}") >= 0)
Log.Info(logLine.Replace("{INFO}", "[I] "));
else if (logLine.IndexOf("{DEBUG}") >= 0)
Log.Debug(logLine.Replace("{DEBUG}", "[D] "));
else if (logLine.IndexOf("{ERROR}") >= 0)
Log.Error(logLine.Replace("{ERROR}", "[E] "));
else if (logLine.IndexOf("{WARN}") >= 0)
Log.Warn(logLine.Replace("{WARN}", "[W] "));
else
// Some other level.
Log.Warn(logLine);
}
}
catch (Exception e)
{
Console.WriteLine(e);
Console.WriteLine("rnPress any key to close...");
Console.ReadLine();
}
}
}
Selain itu, ada satu baris lagi untuk ditambahkan ke assemblyInfo.cs di folder Properties, yang benar -benar akan mengkonfigurasi dan menyalakan log4net.
[assembly: XmlConfigurator(Watch = true)]
Konfigurasikan ColoredConsoleAppender dan atur warna-warna log-level. Berikut ini adalah app.config Anda:
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
</configSections>
<log4net>
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="INFO" />
<foreColor value="White, HighIntensity" />
<backColor value="Green" />
</mapping>
<mapping>
<level value="DEBUG" />
<foreColor value="White, HighIntensity" />
<backColor value="Blue" />
</mapping>
<mapping>
<level value="WARN" />
<foreColor value="Yellow, HighIntensity" />
<backColor value="Purple" />
</mapping>
<mapping>
<level value="ERROR" />
<foreColor value="Yellow, HighIntensity" />
<backColor value="Red" />
</mapping>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="ColoredConsoleAppender" />
</root>
</log4net>
Aplikasi Web adalah proyek ASP.NET dengan satu formulir. Ada beberapa file komponen, tetapi inti dari ini adalah ketika Anda menyalakan aplikasi web, itu akan secara otomatis mulai mengirim pesan log ke aplikasi konsol segera setelah Anda memulai keduanya.
Kemudian coba dua tombol yang Anda lihat. Keduanya akan mengirim pesan log pada level log yang berbeda, dan Anda akan melihat warna yang berbeda dalam aplikasi konsol.

Aplikasi Web dikonfigurasi untuk menggunakan file konfigurasi eksternal untuk log4net. Di dalam file itu, Anda mengkonfigurasi UDPappender per dokumentasi Log4net:
Properti Remoteport harus cocok dengan port di aplikasi konsol, yang dikodekan dengan hard hingga 8081.
Properti RemoteAddress sedikit lebih rumit. Log4net keluar sebelum Mass IPv6 Pengantar versi Windows dan saya kira itu tidak pernah diperbarui dengan benar. Jika aplikasi konsol ada di mesin lokal Anda, Anda harus menggunakan alamat IP 127.0.0.1 dan bukan localhost , karena log4net akan menyelesaikan localhost ke :: 1, yang merupakan alamat IPv6 !!! Jika aplikasi konsol tidak ada di mesin lokal Anda, metode paling langsung untuk membuat pekerjaan ini adalah dengan menggunakan alamat IPV4 dalam formulir xxx.xxx.xxx.xxx sebagai lawan dari nama domain yang sepenuhnya memenuhi syarat (seperti myhost.somecompany.com) karena yang terakhir mungkin menyelesaikan ke alamat IPV6 alih -alih alamat IPV4. Membosankan, eh? Perhatikan ini akan menyelamatkan Anda dari banyak sakit kepala.
Untuk membantu memformat output, Anda dapat meletakkan sintaksis PatternLayout mana yang Anda sukai. Konsultasikan dengan dokumen log4net untuk bantuan dengan itu.