Я хотел бы изменить мой системный журнал.Обратный журнал, как хвост
Мой журнал система выглядит следующим образом:
[ 2016-03-17T15:52:00+08:00 ] 0.0.0.0 /Pwebshell/index.php/Log/GetLog
INFO: [ route_check ] --START--
INFO: CheckRoute Behavior ::run [ RunTime:0.001000s ]
INFO: [ route_check ] --END-- [ RunTime:0.001000s ]
INFO: [ app_begin ] --START--
INFO: ReadHtmlCache Behavior ::run [ RunTime:0.001000s ]
INFO: [ app_begin ] --END-- [ RunTime:0.001000s ]
[ 2016-03-17T15:52:16+08:00 ] 0.0.0.0 /Pwebshell/index.php/Log/GetLog
INFO: [ route_check ] --START--
INFO: CheckRoute Behavior ::run [ RunTime:0.000000s ]
INFO: [ route_check ] --END-- [ RunTime:0.001000s ]
INFO: [ app_begin ] --START--
INFO: ReadHtmlCache Behavior ::run [ RunTime:0.000000s ]
INFO: [ app_begin ] --END-- [ RunTime:0.000000s ]
Я хотел бы напечатать это следующим образом:
[ 2016-03-17T15:52:16+08:00 ] 0.0.0.0 /Pwebshell/index.php/Log/GetLog
INFO: [ route_check ] --START--
INFO: CheckRoute Behavior ::run [ RunTime:0.000000s ]
INFO: [ route_check ] --END-- [ RunTime:0.001000s ]
INFO: [ app_begin ] --START--
INFO: ReadHtmlCache Behavior ::run [ RunTime:0.000000s ]
INFO: [ app_begin ] --END-- [ RunTime:0.000000s ]
[ 2016-03-17T15:52:00+08:00 ] 0.0.0.0 /Pwebshell/index.php/Log/GetLog
INFO: [ route_check ] --START--
INFO: CheckRoute Behavior ::run [ RunTime:0.001000s ]
INFO: [ route_check ] --END-- [ RunTime:0.001000s ]
INFO: [ app_begin ] --START--
INFO: ReadHtmlCache Behavior ::run [ RunTime:0.001000s ]
INFO: [ app_begin ] --END-- [ RunTime:0.001000s ]
То, что я пытался до сих пор:
1 Прежде всего, я читать журнал с использованием file_get_contents
$content = file_get_contents('log');
2 Затем я использовал регулярное выражение для выбора записей.
preg_match_all('#(\[\s+\d{4}\-\d{2}\-\d{2}.*\].*?)\[\s+\d{4}\-\d{2}\-\d{2}#s', $content, $matches);
3 Я буду использовать array_reverse
для изменения журнала.
Но $matches
не были правильно выбраны регулярным выражением.
1 проблема i use 'preg_match_all ('# (\ [\ s + \ d {4} \ - \ d {2} \ - \ d {2}. *? \]. *?) (\ [\ s + \ d {4} \ - \ d {2} \ - \ d {2} | $) # s'', но я могу получить последний журнал, я думаю, что это может быть не конец '$ ', –
Я использую '$ lines = explode (" \ n \ n ", $ content); $ lines = array_reverse ($ lines); echo implode ("\ n \ n", $ lines); он не может получить результат. –
'' 'соответствует концу строки, а не буквальному знаку доллара. Однако я понял, что в regex есть еще одна ошибка. Я отредактирую ответ, чтобы исправить это. –