Dreamine.Logging 1.0.2
Dreamine.Logging 프로젝트의 API와 구성 요소를 제공합니다.
로딩중...
검색중...
일치하는것 없음
Dreamine.Logging.Sinks.TextFileLogSink 클래스 참조sealed

더 자세히 ...

Dreamine.Logging.Sinks.TextFileLogSink에 대한 상속 다이어그램 :
Dreamine.Logging.Sinks.TextFileLogSink에 대한 협력 다이어그램:

Public 멤버 함수

 TextFileLogSink (string logDirectory, IDreamineLogFormatter formatter, int flushEveryWriteCount=DefaultFlushEveryWriteCount)
void Write (DreamineLogEntry entry)
void Dispose ()

Private 멤버 함수

string GetFilePath (DateTimeOffset timestamp)
void EnsureWriter (string filePath)
void FlushCore ()

Private 속성

readonly object _syncRoot = new()
readonly string _logDirectory
readonly IDreamineLogFormatter _formatter
readonly int _flushEveryWriteCount
StreamWriter? _writer
string? _currentFilePath
int _pendingFlushCount
bool _disposed

정적 Private 속성

const int DefaultFlushEveryWriteCount = 20

상세한 설명

Dreamine 로그 항목을 날짜별 텍스트 로그 파일에 기록합니다.

현재 날짜 파일을 열린 상태로 유지하고 지정 횟수마다 또는 오류 이상에서 즉시 flush하며 날짜 변경을 자동 처리합니다.

TextFileLogSink.cs 파일의 25 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ TextFileLogSink()

Dreamine.Logging.Sinks.TextFileLogSink.TextFileLogSink ( string logDirectory,
IDreamineLogFormatter formatter,
int flushEveryWriteCount = DefaultFlushEveryWriteCount )
inline

로그 디렉터리, 포맷터 및 flush 주기로 T:Dreamine.Logging.Sinks.TextFileLogSink를 초기화합니다.

매개변수
logDirectory로그 디렉터리 경로이며 비어 있으면 Logs를 사용합니다.
formatter로그 포맷터입니다.
flushEveryWriteCountflush 사이의 기록 횟수이며 0 이하면 20을 사용합니다. 오류 이상은 즉시 flush합니다.
예외
ArgumentNullExceptionformatternull인 경우 발생합니다.

TextFileLogSink.cs 파일의 150 번째 라인에서 정의되었습니다.

154 {
155 _logDirectory = string.IsNullOrWhiteSpace(logDirectory)
156 ? "Logs"
157 : logDirectory;
158
159 _formatter = formatter ?? throw new ArgumentNullException(nameof(formatter));
160 _flushEveryWriteCount = flushEveryWriteCount <= 0
161 ? DefaultFlushEveryWriteCount
162 : flushEveryWriteCount;
163 }

다음을 참조함 : _flushEveryWriteCount, _formatter, _logDirectory, DefaultFlushEveryWriteCount.

멤버 함수 문서화

◆ Dispose()

void Dreamine.Logging.Sinks.TextFileLogSink.Dispose ( )
inline

대기 중 내용을 flush하고 파일 작성기를 해제합니다.

TextFileLogSink.cs 파일의 224 번째 라인에서 정의되었습니다.

225 {
226 lock (_syncRoot)
227 {
228 if (_disposed)
229 {
230 return;
231 }
232
233 try
234 {
235 FlushCore();
236 }
237 catch
238 {
239 // Suppress flush errors during dispose.
240 }
241
242 _writer?.Dispose();
243 _writer = null;
244 _disposed = true;
245 }
246 }

다음을 참조함 : _disposed, _syncRoot, _writer, FlushCore().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ EnsureWriter()

void Dreamine.Logging.Sinks.TextFileLogSink.EnsureWriter ( string filePath)
inlineprivate

지정한 파일 경로를 대상으로 하는 작성기를 준비하고 날짜 변경 시 교체합니다.

매개변수
filePath대상 파일 경로입니다.

TextFileLogSink.cs 파일의 294 번째 라인에서 정의되었습니다.

295 {
296 if (_writer is not null
297 && string.Equals(_currentFilePath, filePath, StringComparison.OrdinalIgnoreCase))
298 {
299 return;
300 }
301
302 // Date rolled over (or first write) — close the previous file and open the new one.
303 FlushCore();
304 _writer?.Dispose();
305
306 _currentFilePath = filePath;
307 _writer = new StreamWriter(
308 new FileStream(
309 filePath,
310 FileMode.Append,
311 FileAccess.Write,
312 FileShare.ReadWrite),
313 Encoding.UTF8)
314 {
315 AutoFlush = false
316 };
317 }

다음을 참조함 : _currentFilePath, _writer, FlushCore().

다음에 의해서 참조됨 : Write().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ FlushCore()

void Dreamine.Logging.Sinks.TextFileLogSink.FlushCore ( )
inlineprivate

현재 작성기의 대기 내용을 파일에 반영하고 기록 카운터를 초기화합니다.

TextFileLogSink.cs 파일의 327 번째 라인에서 정의되었습니다.

328 {
329 if (_writer is null)
330 {
331 _pendingFlushCount = 0;
332 return;
333 }
334
335 _writer.Flush();
336 _pendingFlushCount = 0;
337 }

다음을 참조함 : _pendingFlushCount, _writer.

다음에 의해서 참조됨 : Dispose(), EnsureWriter(), Write().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetFilePath()

string Dreamine.Logging.Sinks.TextFileLogSink.GetFilePath ( DateTimeOffset timestamp)
inlineprivate

로그 디렉터리를 준비하고 타임스탬프에 해당하는 날짜별 파일 경로를 만듭니다.

매개변수
timestamp로그 타임스탬프입니다.
반환값
날짜별 로그 파일 경로입니다.

TextFileLogSink.cs 파일의 272 번째 라인에서 정의되었습니다.

273 {
274 Directory.CreateDirectory(_logDirectory);
275 return Path.Combine(_logDirectory, $"{timestamp:yyyy-MM-dd}.log");
276 }

다음을 참조함 : _logDirectory.

다음에 의해서 참조됨 : Write().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ Write()

void Dreamine.Logging.Sinks.TextFileLogSink.Write ( DreamineLogEntry entry)
inline

항목을 해당 날짜 파일에 기록하고 구성된 조건에서 flush합니다.

매개변수
entry기록할 항목입니다.
예외
ArgumentNullExceptionentrynull인 경우 발생합니다.

Dreamine.Logging.Interfaces.IDreamineLogSink를 구현.

TextFileLogSink.cs 파일의 189 번째 라인에서 정의되었습니다.

190 {
191 ArgumentNullException.ThrowIfNull(entry);
192
193 lock (_syncRoot)
194 {
195 if (_disposed)
196 {
197 return;
198 }
199
200 var filePath = GetFilePath(entry.Timestamp);
201 EnsureWriter(filePath);
202
203 var text = _formatter.Format(entry);
204
205 _writer!.WriteLine(text);
206 _pendingFlushCount++;
207
208 if (_pendingFlushCount >= _flushEveryWriteCount
209 || entry.Level >= DreamineLogLevel.Error)
210 {
211 FlushCore();
212 }
213 }
214 }

다음을 참조함 : _disposed, _flushEveryWriteCount, _formatter, _pendingFlushCount, _syncRoot, _writer, EnsureWriter(), FlushCore(), GetFilePath(), Dreamine.Logging.Models.DreamineLogEntry.Level, Dreamine.Logging.Models.DreamineLogEntry.Timestamp.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ _currentFilePath

string? Dreamine.Logging.Sinks.TextFileLogSink._currentFilePath
private

current File Path 값을 보관합니다.

TextFileLogSink.cs 파일의 90 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : EnsureWriter().

◆ _disposed

bool Dreamine.Logging.Sinks.TextFileLogSink._disposed
private

disposed 값을 보관합니다.

TextFileLogSink.cs 파일의 108 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : Dispose(), Write().

◆ _flushEveryWriteCount

readonly int Dreamine.Logging.Sinks.TextFileLogSink._flushEveryWriteCount
private

flush Every Write Count 값을 보관합니다.

TextFileLogSink.cs 파일의 72 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : TextFileLogSink(), Write().

◆ _formatter

readonly IDreamineLogFormatter Dreamine.Logging.Sinks.TextFileLogSink._formatter
private

formatter 값을 보관합니다.

TextFileLogSink.cs 파일의 63 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : TextFileLogSink(), Write().

◆ _logDirectory

readonly string Dreamine.Logging.Sinks.TextFileLogSink._logDirectory
private

log Directory 값을 보관합니다.

TextFileLogSink.cs 파일의 54 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetFilePath(), TextFileLogSink().

◆ _pendingFlushCount

int Dreamine.Logging.Sinks.TextFileLogSink._pendingFlushCount
private

pending Flush Count 값을 보관합니다.

TextFileLogSink.cs 파일의 99 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : FlushCore(), Write().

◆ _syncRoot

readonly object Dreamine.Logging.Sinks.TextFileLogSink._syncRoot = new()
private

sync Root 값을 보관합니다.

TextFileLogSink.cs 파일의 45 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : Dispose(), Write().

◆ _writer

StreamWriter? Dreamine.Logging.Sinks.TextFileLogSink._writer
private

writer 값을 보관합니다.

TextFileLogSink.cs 파일의 81 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : Dispose(), EnsureWriter(), FlushCore(), Write().

◆ DefaultFlushEveryWriteCount

const int Dreamine.Logging.Sinks.TextFileLogSink.DefaultFlushEveryWriteCount = 20
staticprivate

Default Flush Every Write Count 값을 보관합니다.

TextFileLogSink.cs 파일의 35 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : TextFileLogSink().


이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: