데이터베이스, 텍스트 파일, XML 파일 등을 사용하여 애플리케이션 작업 로그를 기록할 수 있습니다. 여기서 소개하는 것은 XML 파일을 사용하여 작업 로그를 기록하는 것입니다.
XML을 사용하여 작업 로그를 기록하면 다음과 같은 이점이 있다고 생각합니다.
1. 데이터베이스 공간을 차지하지 않으며, 과거 작업 로그를 마음대로 삭제할 수 있습니다.
2. DataTable은 XML 파일을 쉽게 읽을 수 있으며, DataTable도 XML 파일로 쉽게 저장할 수 있습니다.
3. 로그를 보는 것이 편리합니다. XML 파일을 직접 열어서 보거나 DataTable로 읽어온 다음 프로그램을 통해 볼 수 있습니다.
VS2005에서 XML 파일을 사용하여 작업 로그를 기록하는 방법은 다음과 같습니다.
1. 데이터 세트 생성: JobLogDataSet.xsd
여기에는 TraceLevel(로그 유형), User(사용자), DateTime(작업 시간), Module(모듈), Function(함수), Message(메시지)의 6개 필드가 포함됩니다.
부족하면 직접 추가하세요. TraceLevel(로그 유형)은 Info, Warning, Error, Trance, Off를 의미합니다.
2. 로그 유형 생성 /// <요약>
/// 로그 유형
/// </summary>
공개 열거형 LogType
{
/// <요약>
/// 정보
/// </summary>
정보,
/// <요약>
/// 경고하다
/// </summary>
경고,
/// <요약>
/// 실수
/// </summary>
오류,
/// <요약>
/// 추적
/// </summary>
추적하다,
/// <요약>
/// 로깅 없음
/// </summary>
끄다
}
2. 로그 작성 방법
/// <요약>
/// 로그 쓰기
/// </summary>
/// <param name="traceLevel">로그 유형(정보, 경고, 오류, 트랜스, 끄기)</param>
/// <param name="user">사용자</param>
/// <param name="module">모듈</param>
/// <param name="function">함수</param>
/// <param name="message">메시지</param>
public static void WriteLog(LogType logType, 문자열 사용자, 문자열 모듈, 문자열 함수, 문자열 메시지)
{
노력하다
{
// LogType.Off를 입력하면 로그가 기록되지 않습니다.
if (logType == LogType.Off)
return;
JobLogDataSet.JobLogDataTable t = new JobLogDataSet.JobLogDataTable();
// 매일 하나의 로그 파일(.XML 파일), 로그 파일 이름은 JobLog yyyy-MM-dd.xml입니다.
문자열 jobLogFile = AppDomain.CurrentDomain.BaseDirectory + "JobLog " +
DateTime.Today.ToString("yyyy-MM-dd") + ".xml";
if (!File.Exists(jobLogFile))
t.WriteXml(jobLogFile);
// .XML 파일에서 로그를 읽습니다.
t.ReadXml(jobLogFile);
//로그 추가
JobLogDataSet.JobLogRow r = t.NewJobLogRow();
r.TraceLevel = logType.ToString();
r.사용자 = 사용자;
r.Datetime = DateTime.Now;
r.모듈 = 모듈;
r.함수 = 함수;
r.Message = 메시지;
t.AddJobLogRow(r);
// 로그를 XML 파일에 저장합니다.
t.WriteXml(jobLogFile);
}
잡기(예외)
{}
}
3. 로그를 읽는 방법
/// <요약>
/// 로그 읽기
/// </summary>
/// <returns>로그를 읽기 위한 DataTable을 반환합니다.</returns>
공개 정적 JobLogDataSet.JobLogDataTable ReadLog()
{
JobLogDataSet.JobLogDataTable jobLogDataTable = 새로운 JobLogDataSet.JobLogDataTable();
노력하다
{
// 애플리케이션 폴더에서 모든 로그 파일 JobLog*.xml을 가져옵니다.
string[] jobLogFiles = Directory.GetFiles(
AppDomain.CurrentDomain.BaseDirectory, "JobLog*.xml", SearchOption.TopDirectoryOnly)
// 로그 DataTable로 각 로그 레코드를 읽습니다.
foreach(jobLogFiles의 문자열 jobLogFile)
{
if (파일.존재(jobLogFile))
{
//모든 로그 파일을 임시 DataTable로 읽습니다.
JobLogDataSet.JobLogDataTable t = 새로운 JobLogDataSet.JobLogDataTable();
t.ReadXml(jobLogFile);
//로그 레코드를 기본 로그 DataTable로 가져옵니다.
foreach(JobLogDataSet.JobLogRow r in t)
jobLogDataTable.ImportRow(r);
}
}
// 읽은 로그 DataTable을 반환합니다.
jobLogDataTable을 반환합니다.
}
잡기(예외)
{
jobLogDataTable을 반환합니다.
}
}
4. 로그를 작성해야 할 때마다 WriteLog 메서드를 직접 호출하면 됩니다.