Messaging mit dem Service Bus ermöglicht die...

Read more

Sebastian Meyer, Microsoft & SAP...

Read more

Für Entwickler, Architekten, Projektleiter und...

Read more

In der Welt der Softwareentwicklung ist die...

Read more

QUIBIQ spendet für den guten Zweck – und für...

Read more

Eine bestimmte Antwort auf einen HTTP Request zu...

Read more

In einer Welt, die von stetigem Wandel geprägt...

Read more

In einem unserer Kundenprojekte, war das Ziel eine...

Read more

QUIBIQ Hamburg wird mit dem Hamburger...

Read more

Zwei Tage lang wurde vom 14.-15.11 wieder das...

Read more

How-to: Message-Längen Beschränkung im Event Log

Wenn eine lange Message in das Windows EventLog mit System.Diagnostics.EventLog.WriteEntry geschrieben wird...

An unhandled exception of type 'System.ArgumentException' occurred in System.dll

Additional information: Log entry string is too long. A string written to the event log cannot exceed 32766 characters.

Klar genug, so scheint es. Jedoch Überraschung; beschränkt man die Message auf die mitgeteilte Länge von 32766 (oder ein paar weniger) Zeichen, entsteht wieder eine Exception, dieses Mal nicht so aussagekräftig:

An unhandled exception of type 'System.ComponentModel.Win32Exception' occurred in System.dll

Additional information: The parameter is incorrect

Die aktuelle Dokumentation

            https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.eventlog
bzw. die Dokumentation der WinAPI, auf der das beruht
            https://docs.microsoft.com/de-de/windows/desktop/api/winbase/nf-winbase-reporteventa
macht dann auch klar, dass die eigentliche Maximal-Länge seit Windows Vista bei
            31839 Zeichen 
liegt. Der Argument-checking Code der EventLog.WriteEntry Methode ist nur offenbar noch nicht angepasst.

Das Ganze zusammengefasst in einem Code-Snippet.

// An unhandled exception of type 'System.ArgumentException' occurred in System.dll

// Additional information: Log entry string is too long.

// A string written to the event log cannot exceed 32766 characters.

//Int32 maxLength = 33000;

 

// An unhandled exception of type 'System.ComponentModel.Win32Exception' occurred in System.dll

// Additional information: The parameter is incorrect

//Int32 maxLength = 32766;

 

// Success!

Int32 maxLength = 31839;

 

String msgShortened = msg.Length > maxLength ? msg.Substring(0, maxLength) : msg;

EventLog.WriteEntry("Xperiment", msgShortened, EventLogEntryType.Information, 55555);

Viel Spass beim Coding!

Plamen Petrow
QUIBIQ Schweiz

© QUIBIQ GmbH · Imprint · Data protection