Probleme mit dem Log-Timestamp

Hall zusammen,

ich habe hier das folgende Phänomen: mitten im Betrieb wird das Format des Log-Timestamps von „amerikanisch“ (=MM/DD/YYYY) auf „europäisch“ (=DD/MM/YYYY) umgestellt. Siehe unten:

------------------------ (cut here) ------------------------

12/13/2010 22:42:49.906 | 30354 | DEBUG | VariableManager | [Incalzire\Umiditate Humidor\Humidity] = 80.8
12/13/2010 22:42:49.906 | 51500 | DEBUG | ExecuteThreadID #10 | Executing Script: 51500.ips.php ~ Sender: Event #29458, Variable #31626, Trigger: OnUpdate
12/13/2010 22:42:49.906 | 19826 | MESSAGE | VariableManager | [Incalzire\Umiditate Humidor\Update] = 2010-12-13 22:42:49
12/13/2010 22:42:49.906 | 51500 | MESSAGE | ExecuteThreadID #10 | [Incalzire\Umiditate Humidor\Update\Update] =

12/13/2010 22:42:49.906 | 51500 | DEBUG | ExecuteThreadID #10 | Executed, Result: 1, Successful: True, Time: 12 ms

------------------------ hier passierts’s ------------------------

13/12/2010 22:42:51.015 | 23559 | DEBUG | ExecuteThreadID #8 | Executing Script: 23559.ips.php ~ Sender: Event #56559, TimerEvent
13/12/2010 22:42:51.015 | 16961 | DEBUG | VariableManager | [Incalzire\Oldest Update] = 1 minutes ago.
13/12/2010 22:42:51.015 | 23559 | DEBUG | ExecuteThreadID #8 | Executed, Result: 1, Successful: True, Time: 4 ms
13/12/2010 22:43:00.015 | 36486 | DEBUG | ExecuteThreadID #1 | Executing Script: 36486.ips.php ~ Sender: Event #17604, TimerEvent
13/12/2010 22:43:00.437 | 46014 | MESSAGE | VariableManager | [Status\El Mirador\CPU] = 1
13/12/2010 22:43:00.875 | 14054 | DEBUG | VariableManager | [Status\El Mirador\System Battery] = 99

Ein Neustart des IPS-Dienstes generiert wieder anständige Timestamps.
Da ich die Log-Einträge anderweitig auswerte, bin ich auf … hm … „Formatstabilität“ angewiesen. Ich habe nichts am System verändert, also tippe ich auf einen Bug.

Kann jemand helfen?

Danke

Adrian

Oha. Kannst du vielleicht irgendwie Orten, welches Skript oder Funktion diese Änderung bewirkt? Ansonsten würde ich eine Nadel im Heuhaufen suchen…

paresy

Hi Paresy, verstanden. Ich mach mich dran. Aber nicht mehr zu dieser unchristlichen Uhrzeit :slight_smile:

So viel sei noch angemerkt: vielleicht liegt’s am Zeitzonenphänomen … der Rechner, auf dem der Server läuft, liegt eine Zeitzone von hier entfernt.

Wie dem auch sei, ich werde es näher analysieren und melde mich.

Danke derweil

Adrian

So, die gute Nachricht ist, dass ich ein Woraround gefunden habe.

Nun aber zunächst mal zu den Grunddaten des Problems:

Betriebssystem: WindowsXP Pro in SPANISCH
Zeitzone: Athen/Bucharest (GMT+2)
Regionale Einstellungen (u.A. Datum & Zeitformat): English(USA)

Ich gebe zu, recht bunt gemischt.

Ich habe die regionalen Einstellungen auf Deutsch(Deutschland) umgestellt. Hier das Ergebnis:

14.12.2010 01:58:16.890 | 21238 | DEBUG | VariableManager | [Incalzire\Termostat Bucatarie\Bucatarie\Temperature] = 16,4
14.12.2010 01:58:17.546 | 15371 | DEBUG | VariableManager | [Incalzire\Termostat Bucatarie\Bucatarie\Low Battery] = False
14.12.2010 01:58:17.546 | 32833 | DEBUG | VariableManager | [Incalzire\Termostat Bucatarie\Bucatarie\Window Open] = False
14.12.2010 01:58:37.125 | 29174 | DEBUG | VariableManager | [Incalzire\Termostat Dormitor\Dormitor\Position] = 0
14/12/2010 01:59:47.781 | 44694 | DEBUG | VariableManager | [Incalzire\Termostat Bucatarie\Bucatarie\Position] = 0
14/12/2010 01:59:55.875 | 27131 | DEBUG | VariableManager | [Incalzire\Termostat Salon\Salon\Position] = 0
14/12/2010 02:00:00.015 | 30347 | DEBUG | ExecuteThreadID #4 | Executing Script: 30347.ips.php ~ Sender: Event #38991, TimerEvent
14/12/2010 02:00:00.015 | 30347 | MESSAGE | ExecuteThreadID #4 | [SENZORIA\CONTROL\Power Check] =

Beobachtung: nach einer Zeit (unabhängig von Skripten, manchmal passiert’s direkt beim Hochfahren des Dienstes) wird das Datumsformat umgestellt. D.h., der Dienst startet und läuft eine Zeit lang mit der in der Systemsteuerung festgelegten Einstellung, danacht schaltet es um auf etwas, was wohl Englisch(Grossbritannien) zu sein scheint. Danach bleibt es so (das Format wird nicht mehr zurückgeschaltet) bis zum nächsten Start des IPS-Dienstes. Danach geht’s von vorne los :slight_smile:

Als Workaround reicht, die regionalen Einstellungen in der Systemsteuerung von English(USA) auf English(UK) oder Deutsch(Deutschland) umzustellen und die wechselnden Trennzeichen im Datum (also „.“ bzw. „/“) programmtechnisch abzufangen, indem das Zeichen „/“ automatisch mit „.“ ersetzt wird, bevor strtotime() aufgerufen wird.

Viele Grüsse

Adrian