Tải bản đầy đủ (.docx) (15 trang)

THỰC HÀNH log4net

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (609.01 KB, 15 trang )

Thực Hành Log4net
Bài tập 1:
1/. Truy cập trang />
Download Log4net 2.0.8, giải nén file log4net-2.0.8-bin-newkey.zip ra đĩa C: hoặc D:, …
2/. Tạo 1 Console Project


3/. Thực hiện Add Reference vào Project (RC tại Project, chọn Add Reference…)

Kết quả như hình sau:


Hoặc có thể chọn TOOLS \ NuGet Package Manager \ Manager NuGet Packages for Solution ..

Chọn Install để cài đặt.
4/. Mở AssemblyInfo.cs, thêm dòng lệnh sau:
[assembly: log4net.Config.XmlConfigurator(Watch=true)]


5/. Mở App.config
Thêm thẻ: (làm thẻ đầu tiên, nếu không sẽ bị lỗi đọc file config)
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
</configSections>

Tiếp theo thêm các thẻ khác sau thẻ <startup> như sau:
<log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="G:/logcuatoi.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />


<maxSizeRollBackups value="10" />
<maximumFileSize value="2MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level %logger - %message %newline"/>
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>


6/. Tạo Program.cs như sau:
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
log4net;
//thêm dòng khai báo 1

log4net.Config; //thêm dòng khai báo 2

namespace ConsoleApplication1
{
class Program
{
//thêm dòng lệnh này để tạo logger
private static readonly ILog _logger =
LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
static void Main(string[] args)
{
//viết các lệnh trong Main
_logger.Info("Bat dau chuong trinh:");
try
{
string s = "abc";
int i = int.Parse(s);
}
catch (Exception ex)
{
_logger.Debug(ex);
}
_logger.Info("Ket thuc chuong trinh./.");
}
}

}


Dịch và chạy chương trình. Hãy xem file logcuatoi.txt:



Bài tập 2:
1/. Download Log4net, giải nén ra ổ đĩa ,…. (tương tự Bài tập 1)
2/. Tạo 1 Windows Form Application Project
3/. Thực hiện Add Reference vào Propject như sau: (tương tự Bài tập 1)
Right click tại References, chọn Add Reference …

4/. Mở AssemblyInfo.cs, thêm dòng lệnh sau:
[assembly: log4net.Config.XmlConfigurator(Watch=true)]

5/. Mở App.config
Thêm thẻ:

<configSections> … </configSections> // làm thẻ đầu tiên, nếu không sẽ bị lỗi đọc file config.

<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
</configSections>


Tiếp theo thêm các thẻ khác sau thẻ <startup> như sau:
<log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="E:\Mylog.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="2MB" />
<staticLogFileName value="true" />

<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level %logger-%message %exception %newline"/>
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>

6/. Tạo Program.cs như sau:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using log4net;
//thêm dòng khai báo 1
using log4net.Config;
//thêm dòng khai báo 2
namespace Log_2
{
static class Program
{
//


private static readonly ILog _logger =
LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
[STAThread]

static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
_logger.Info("Bat dau chuong trinh:");
Application.Run(new Form1());

}

}

}

7/. Tạo Form 1 như sau:

Có 3 Label, 3 Text box (T1, T2, TKQ) , 6 Button.
Viết Code cho Form và các Button như sau :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using log4net;
//thêm dòng khai báo 1
using log4net.Config;
//thêm dòng khai báo 2

namespace Log_2
{
public partial class Form1 : Form
{
//thêm dòng lệnh này để tạo logger
private static readonly ILog _logger =
LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
//Khai báo các biến
public double SO1;
public double SO2;
public double KQ;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{ //Nút Cộng
_logger.Debug("Thuc hien phep cong");
SO1 = Convert.ToDouble(T1.Text);
SO2 = Convert.ToDouble(T2.Text);
KQ = SO1 + SO2;
TKQ.Text = Convert.ToString(KQ);


}
private void button2_Click(object sender, EventArgs e)
{ //Nút Trừ
_logger.Debug("Thuc hien phep tru");
SO1 = Convert.ToDouble(T1.Text);
SO2 = Convert.ToDouble(T2.Text);

KQ = SO1 - SO2;
TKQ.Text = Convert.ToString(KQ);
}
private void button3_Click(object sender, EventArgs e)
{
//Nút nhân
_logger.Debug("Thuc hien phep nhan");
try
{
SO1 = Convert.ToDouble(T1.Text);
SO2 = Convert.ToDouble(T2.Text);
KQ = SO1 * SO2;
TKQ.Text = Convert.ToString(KQ);
}
catch (Exception ex)
{
_logger.Error("Xay ra loi: "+ex);
}
}
private void button4_Click(object sender, EventArgs e)
{
//Nút Chia
_logger.Debug("Thuc hien phep chia");
try
{
SO1 = Convert.ToDouble(T1.Text);
SO2 = Convert.ToDouble(T2.Text);
KQ = SO1 / SO2;
TKQ.Text = Convert.ToString(KQ);
}

catch (Exception ex)
{
_logger.Error("Xay ra loi: "+ ex);
}
}
private void button6_Click(object sender, EventArgs e)
{
T1.Text = "";
T2.Text = "";
TKQ.Text = "";
T1.Focus();
}

}
}

private void button7_Click(object sender, EventArgs e)
{
_logger.Info("Ket thuc chuong trinh./.");
Application.Exit();
}


Dịch và chạy chương trình. Hãy xem file Mylog.txt: (sinh viên tìm hiểu …?)


1/. Log4net:
LOG4NET là một thư viện mã nguồn mở cho phép ta có thể tạo ra một hoặc nhiều tập tin nhật ký (log) ghi
nhận quá trình chương trình ‘chạy’. Khi sử dụng log4net sẽ khơng ảnh hưởng gì đến việc thực hiện của ứng
dụng và điều quan trọng là người bảo trì có thể theo dõi sự hoạt động của ứng dụng. Log4net cho phép sử dụng

trong cả Java.

2/. Cấu hình Log4net: mọi cấu hình được thực hiện theo dữ liệu XML
Được thực hiện trong tập tin cấu hình: App.config cho Window Form hoặc Web.config cho Asp.NET.


Thẻ <configuration> …</configuration>: là thẻ lớn nhất chứa nội dung cấu hình.



Thẻ <configSections>…</configSections> :



Thẻ <root> …</root> : dùng qui định mức log và tham chiếu Appender.



Trong thư viện Apache log4net có cung cấp sẵn 7 mức (level) ghi log cho ứng dụng đó là : OFF,
FATAL, ERROR, WARN, INFO, DEBUG, ALL với ý nghĩa như sau:

Ưu
tiên
1
2
3
4
5
6
7


Loại log
OFF
FATAL
ERROR
WARN
INFO
DEBUG
ALL

Ghi chú
Khơng ghi gì cả
Ghi nhận log loại Fatal (nghiêm trọng)
Ghi nhận các log loại Fatal, Error
Ghi nhận các log loại Fatal, Error, Warning
Ghi nhận các log loại Fatal, Error, Warning, Info
Ghi nhận các loại Fatal, Error, Warning, Info, debug (mặc định là Debug)
Ghi nhận tất cả các loại log

Ví dụ :
<root>
<level value="INFO"/>
<appender-ref ref="FileAppender"/>
<appender-ref ref="ConsoleAppender" />
</root>



Thẻ <appender> …</appender>: Thẻ này quy định cách thức lưu trữ log, trong đó có 4 cách cơ bản
thể hiện:

+ ConsoleAppender: ghi log ra cửa sổ lệnh.
Ví dụ:
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">

</layout>
<filter type="log4net.Filter.StringMatchFilter">
<stringToMatch value="test" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>


+ FileAppender: ghi log vào tập tin văn bản (file text)
Ví dụ:
<appender name="FileAppender" type="log4net.Appender.FileAppender">

Path:\mylogfile.txt


<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="FATAL" />

</filter>
</appender>

+ RollingFileAppender: ghi log vào tập tin văn bản một cách tuần hoàn, các tập tin là mylogfile.txt.1,
mylogfile.txt.2, …, mylogfile.txt.5, khi tập tin đạt kích thước 10MB, hỗ trợ ghi file theo ngày tháng,
kích thước.
Ví dụ:
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="path:\mylogfile.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>

+ AdoNetAppender: ghi log vào tập tin cơ sở dữ liệu và phải tạo trước CSDL và bảng ghi dữ liệu (tùy
thuộc hệ quản trị CSDL cụ thể, sinh viên tham khảo />Ví dụ: dùng cho MS SQL Server
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="100" />



@logger, @message, @exception)" />


<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>


<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">


<conversionPattern value="%thread" />
</layout>
</parameter>


<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>


<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />

</layout>
</parameter>


<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>


<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>



Thẻ <layout>…</layout>: bên trong thẻ Appender đều có thẻ Layout để xác định dữ liệu được ghi.

Ví dụ:
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline"/>
</layout>



Thẻ <conversionPattern>: dùng khai báo cho Appender biết làm sao ghi log, ghi những gì theo các từ

khóa sau:
o %date – Xuất ra ngày tháng năm theo múi giờ địa phương, có thể định dạng như sau:
%date{MMMM dd, yyyy HH:mm:ss}.
o %utcdate - Xuất ra ngày tháng năm theo múi giờ quốc tế.
o %exception - Nếu lỗi được thông qua, sẽ có thêm dịng báo lỗi đã xảy ra.
o %level – Xuất ra mức log như: DEBUG, INFO, WARN, …
o %message – Xuất ra thông báo cần ghi log.
o %newline – Thêm 1 dòng mới (xuống dòng).
o %timestamp – Xuất ra số milliseconds từ lúc ứng dụng bắt đầu.
o %thread – Xuất ra tên của thread sinh ra sự kiện ghi log.
o %ndc (Nested Diagnostic Contexts)- Xuất các ngữ cảnh chẩn đốn lồng nhau.
o Ngồi ra cho phép dùng số để qui định độ dài cho dữ liệu (giống C++)



Thẻ <filter>: định nghĩa bộ lọc dùng cho Appender.

Ví dụ: Sv tự tìm hiểu


<filter type="log4net.Filter.StringMatchFilter">
<stringToMatch value="test" />
</filter>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="FATAL" />
</filter>
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="ERROR"/>
</filter>

<filter type="log4net.Filter.DenyAllFilter" />

3/. Cài đặt Log: viết các lệnh trong Program.cs


Khởi tạo Logger:

private static readonly ILog _logger =
LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().Decla
ringType);


Xuất nội dung Log: trong Program.cs và trong các đoạn chương trình cần Log (trong code, nơi nào cần
log thì thêm đoạn code sau đây):

_logger.Info(“thông báo);
_logger.Debug(“thông báo);
_logger.Error(“thông báo);
_logger.Fatal(“thông báo);
_logger.Warn(“thông báo);

//nên dùng trong Try … Catch

Tham khảo thêm tại trang:
/>


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×