| 

.NET C# Java Javascript Exception

5
Guten Morgen Zusammen,

ich nutze den RollingFileAppender um bestimmte Ereignisse einer 24/7 Anwendung in eine Log zu schreiben.
Der Dateiname muss wie folgt aussehen:

"blabla-2012- 3- 6.txt" bzw. "blabla-2012-13- 6" bzw. "blabla-2012- 3-12.txt"

Das Problem ist, dass ich kein DateTimeFormat kenne, dass Blanks anstatt den nullen akzeptieren nutzen würde.

RollingFileAppender appender = new RollingFileAppender();
appender.Name = String.Format("appender_{0}", name);
appender.File = string.Format("{0}{1}{2}{3}", logPath, @"\", fileName, extension);
appender.AppendToFile = true;
appender.LockingModel = new FileAppender.MinimalLock();
appender.StaticLogFileName = false;
->> appender.DatePattern = string.Format("-yyyy-M-d");
....


Vielleicht hab ich aber auch nur Tomaten auf den Augen...
09.05.2012
muus84 33 4
Watt? :O Mach doch einfach appender.DatePattern = string.Format("-yyyy -M -d");
Nicolai Schönberg 09.05.2012
@Nicolai: Er will eine feste Länge von exakt 10 Zeichen wobei er keine führenden 0 sondern ein Leerzeichen als Füllzeichen haben will.
Floyd 09.05.2012
Genau. Habe mich da vll nicht ganz klar ausgedrückt!
muus84 10.05.2012
Ich weiß nicht einmal, wie ich helfen kann
GodDog 11.09.2017
6 Antworten
1
Ich kenn mich ein wenig im dem Quellcode von log4net aus und hab die entsprechende Stelle für dich mal analysiert.
Leider muss ich dir sagen, das dies nicht möglich ist ohne ein paar Änderungen an der Log4Net-Klasse vorzunehmen.

Für das DatePattern-Propertie wird nur ein String entgegen genommen der den Regeln von Custom DateTime Format Strings entspricht. Dieser String wird dann direkt an die ToString-Methode von DateTime.Now übergeben.

Eines von vielen Beispielen:
fileName = CombinePath(fileName, m_now.ToString(m_datePattern, System.Globalization.DateTimeFormatInfo.InvariantInfo));

Quelle: /log4net/trunk/src/Appender/RollingFileAppender.cs?revision=1171559 Line 692

Die einzigste Option die ich neben des Foken des log4net-Codes sehe, ist nochmal über deine Konvention mit den Leerzeichen nachzudenken und ggf. dich mit Nullen als Füllzeichen anzufreunden:

appender.DatePattern = string.Format("-yyyy-MM-dd"); //entspricht -2012-05-09
09.05.2012
Floyd 14,6k 3 9
Floyd 14,6k 3 9
2
Danke für die Antwort.
Da sich leider an der Konvention nicht rütteln lässt, auch ich finde sie nicht gelungen, habe ich von RollingFileAppender abgeleitet und so das Format implementiert.

Finde die Lösung zwar nicht prickelnd......
10.05.2012
muus84 33 4
1
Das nennt man dann Objekt Orientierte Programmierung und gehört dazu :) Ist doch schön das so etwas geht. Stell dir mal vor du müsstest den Appender selber schreiben.
Karl 10.05.2012
0
Natürlich ist das OOP. Eigentlich rege ich mich auch nur über das Datumsformat auf.... ;-)

EDIT: Wollte eigentlich auf den Comment von Karl antworten ;-)
10.05.2012
muus84 33 4
Ich verzeihe dir :-)
Karl 10.05.2012
0
O, thanks see my all comment post play text twist game this see the post comment.
30.08.2017
0
play free mahjong dimensions online just click here http://mahjongfreegames.online/dimensions this game is the best to mind game
08.09.2017

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH