11/*
2- * Copyright 2015 Mikhail Shiryaev
2+ * Copyright 2016 Mikhail Shiryaev
33 *
44 * Licensed under the Apache License, Version 2.0 (the "License");
55 * you may not use this file except in compliance with the License.
2020 *
2121 * Author : Mikhail Shiryaev
2222 * Created : 2005
23- * Modified : 2015
23+ * Modified : 2016
2424 */
2525
2626using System ;
@@ -43,21 +43,21 @@ public class Log
4343 public enum ActTypes
4444 {
4545 /// <summary>
46- /// Исключение
47- /// </summary>
48- Exception ,
49- /// <summary>
50- /// Ошибка
46+ /// Информация
5147 /// </summary>
52- Error ,
48+ Information ,
5349 /// <summary>
5450 /// Действие
5551 /// </summary>
5652 Action ,
5753 /// <summary>
58- /// Информация
54+ /// Ошибка
5955 /// </summary>
60- Information
56+ Error ,
57+ /// <summary>
58+ /// Исключение
59+ /// </summary>
60+ Exception ,
6161 }
6262
6363 /// <summary>
@@ -85,10 +85,10 @@ public enum Formats
8585 /// </summary>
8686 public const int DefCapacity = 1048576 ;
8787
88- private Formats format ; // формат
89- private StreamWriter writer ; // объект для записи в файл
90- private FileInfo fileInfo ; // информация о файле
91- private Object writeLock ; // объект для синхронизации обращения к журналу из разных потоков
88+ private readonly Formats format ; // формат
89+ private readonly object writeLock ; // объект для синхронизации обращения к журналу из разных потоков
90+ private StreamWriter writer ; // объект для записи в файл
91+ private FileInfo fileInfo ; // информация о файле
9292
9393
9494 /// <summary>
@@ -97,9 +97,9 @@ public enum Formats
9797 protected Log ( )
9898 {
9999 format = Formats . Simple ;
100+ writeLock = new object ( ) ;
100101 writer = null ;
101102 fileInfo = null ;
102- writeLock = new object ( ) ;
103103
104104 FileName = "" ;
105105 Encoding = Encoding . Default ;
@@ -209,30 +209,73 @@ protected string ActTypeToStr(ActTypes actType)
209209
210210
211211 /// <summary>
212- /// Записать действие типа информация в журнал
212+ /// Записать действие определённого типа в журнал
213213 /// </summary>
214- public void WriteAction ( string text )
214+ public void WriteAction ( string text , ActTypes actType )
215+ {
216+ StringBuilder sb = new StringBuilder ( DateTime . Now . ToString ( DateTimeFormat ) ) ;
217+
218+ if ( format == Formats . Simple )
219+ {
220+ WriteLine ( sb . Append ( " " ) . Append ( text ) . ToString ( ) ) ;
221+ }
222+ else
223+ {
224+ WriteLine ( sb . Append ( " <" )
225+ . Append ( CompName ) . Append ( "><" )
226+ . Append ( UserName ) . Append ( "><" )
227+ . Append ( ActTypeToStr ( actType ) ) . Append ( "> " )
228+ . Append ( text ) . ToString ( ) ) ;
229+ }
230+ }
231+
232+ /// <summary>
233+ /// Записать информационное действие в журнал
234+ /// </summary>
235+ public void WriteInfo ( string text )
215236 {
216237 WriteAction ( text , ActTypes . Information ) ;
217238 }
218239
219240 /// <summary>
220- /// Записать действие определённого типа в журнал
241+ /// Записать обычное действие в журнал
221242 /// </summary>
222- public void WriteAction ( string text , ActTypes actType )
243+ public void WriteAction ( string text )
223244 {
224- string nowStr = DateTime . Now . ToString ( DateTimeFormat ) ;
225- if ( format == Formats . Simple )
226- WriteLine ( nowStr + " " + text ) ;
245+ WriteAction ( text , ActTypes . Action ) ;
246+ }
247+
248+ /// <summary>
249+ /// Записать ошибку в журнал
250+ /// </summary>
251+ public void WriteError ( string text )
252+ {
253+ WriteAction ( text , ActTypes . Error ) ;
254+ }
255+
256+ /// <summary>
257+ /// Записать исключение в журнал
258+ /// </summary>
259+ public void WriteException ( Exception ex , string errMsg = "" , params object [ ] args )
260+ {
261+ if ( string . IsNullOrEmpty ( errMsg ) )
262+ {
263+ WriteAction ( ex . ToString ( ) , ActTypes . Exception ) ;
264+ }
227265 else
228- WriteLine ( new StringBuilder ( nowStr ) . Append ( " <" ) . Append ( CompName ) . Append ( "><" ) . Append ( UserName ) .
229- Append ( "><" ) . Append ( ActTypeToStr ( actType ) ) . Append ( "> " ) . Append ( text ) . ToString ( ) ) ;
266+ {
267+ WriteAction ( new StringBuilder ( )
268+ . Append ( args == null || args . Length == 0 ? errMsg : string . Format ( errMsg , args ) )
269+ . Append ( ":" ) . Append ( Environment . NewLine )
270+ . Append ( ex . ToString ( ) ) . ToString ( ) ,
271+ ActTypes . Exception ) ;
272+ }
230273 }
231274
232275 /// <summary>
233276 /// Записать строку в журнал
234277 /// </summary>
235- public void WriteLine ( string text )
278+ public void WriteLine ( string text = "" )
236279 {
237280 try
238281 {
@@ -260,14 +303,6 @@ public void WriteLine(string text)
260303 }
261304 }
262305
263- /// <summary>
264- /// Записать пустую строку в журнал
265- /// </summary>
266- public void WriteLine ( )
267- {
268- WriteLine ( "" ) ;
269- }
270-
271306 /// <summary>
272307 /// Записать разделитель в журнал
273308 /// </summary>
0 commit comments