system management
1748194 メンバー
3789 オンライン
108759 解決策
新規ポスト

syslogのdate形式を変換する方法について

 
ako
時折のコントリビューター

syslogのdate形式を変換する方法について

お世話になります。

下記、質問について何か良いアドバイスをお願い致します。

syslogの情報を別ファイルへ出力する際、日時部分の形式を以下の通り変換し出力するスクリプトを作成しようと考えております。

「月」部分はcase文を使用してどうにか変換することかできたのですが、「西暦」部分の取得がうまくいきません。

例えば、西暦が変わっても自動的に西暦を取得し、以下の形式へ変換する良い方法がありましたらアドバイスをお願いします。

宜しくお願いします。

<slslogの出力形式>

(通常時の形式):Dec 3 12:00:00 *** ***** *******

  ↓

(変更時の形式):2007/12/03 12:00:00 *** ***** *******
2件の返信2
hazelwood
信頼あるコントリビューター

syslogのdate形式を変換する方法について

もともとない情報を付加するのは、無理があるのではないでしょうか?

対策として思いつく案をあげておきます。

ご参考になれば幸いです。

案1) 直近1年分しか処理しないと仮定して、処理日の日付を元に西暦年を追加する。

案2) syslog.logファイルのタイムスタンプから西暦年を取得(stat(2))・追加する。

案3) 定期的に西暦年を含む日付をsyslog.logに書き込み(cron+logger+date)、それをタイムマーカーとして、西暦年を取得する。
nt
貴重なコントリビューター

syslogのdate形式を変換する方法について

複数年のログをまとめて処理するのであれば

1. YEAR1 とかを行頭に追加

2. 月が若くなった時点で年をインクリメント

3. 最終年を元に YEAR を変換

たとえば YEAR1 - YEAR4 となった場合

YEAR1 -> 2004

YEAR2 -> 2005

YEAR3 -> 2006

YEAR4 -> 2007

と変換する

一度しか実行しないのであれば手作業でもそれほど大変ではないと思います。