2012-07-09 15 views
6

Un oggetto FileTarget in NLog ha una proprietà (bool) chiamata "keepFileOpen". Per impostazione predefinita questa proprietà è impostata su false, il che significa che ogni evento di registro aprirà il file, scriverà nel file e chiuderà il file.Flag di file NLog e keepFileOpen flag

L'impatto delle prestazioni è enorme, quindi ho specificato "keepFileOpen" su true, anziché false, il che significa che il file verrà aperto una sola volta.

Qualcuno ha un'idea (o semplicemente sa) perché questa proprietà è impostata su "falso" per impostazione predefinita, incidendo negativamente sulle prestazioni durante la registrazione?

Esiste qualche scenario in cui l'impostazione di questa proprietà su true può causare problemi (che quindi avrebbe senso impostarla su "false").

Grazie!

EDIT

misurazioni di prestazione per il layout di base, la scrittura 100K eventi al logger:

  • keepFileOpen = false (default): ~ 101 sec
  • keepFileOpen = true: ~ 1 sec

risposta

0

Proverei a mandare loro una e-mail e chiedere loro di farlo. Non riesco a capire alcun motivo per cui questa opzione è falsa di default.

5

Direi che chiudere il file è il comportamento previsto. Se cercherete di accedere al file da un altro processo o di eliminarlo nel file system mentre il processo NLog è attivo, porteremmo a quegli fastidiosi errori di sistema che dicono che alcuni processi contengono il file ecc.

Se l'ora di aprire un file è troppo lungo per te, prova ad usare AsyncWrapper e otterrai un comportamento fire-and-forget.

Quindi penso che il valore predefinito sia ok.