COBOLのログファイル管理を自動化!初心者でも安心の運用スクリプト基本例
生徒
「COBOLのプログラムを動かしたときに出る、実行結果の記録(ログ)が溜まりすぎて困っています。手作業で消すのは大変だし、間違えて大事なデータを消しそうで怖いです。」
先生
「それは『ログ管理』という重要な作業ですね。CLIツールや運用スクリプトを使えば、古いログを自動で整理したり、日付ごとに保存したりできるんですよ。」
生徒
「自動で整理できるんですか!パソコンに詳しくない私でも、そんな便利な仕組みを作れますか?」
先生
「もちろんです。まずはログがなぜ大切なのか、そしてどうやってスクリプトで管理するのか、基本からじっくり解説しますね!」
1. ログファイルとは?システムの「活動日記」
プログラミングの世界で使われるログファイルとは、コンピューターやプログラムが「いつ、何をしたか」を記録したテキストファイルのことです。未経験の方には、学校の「出席簿」や「交換日記」のようなものだと考えてもらうと分かりやすいでしょう。
COBOLプログラムが正常に終わったのか、あるいは途中でエラーが起きて止まってしまったのかを確認するために、このログは欠かせません。しかし、毎日プログラムを動かしていると、この日記(ログ)はどんどん増えていき、放っておくとパソコンの記憶容量を使い果たしてしまいます。そこで、古いものを捨てたり、別の場所にまとめたりするログ管理という仕事が必要になるのです。
2. CLIツールとスクリプトで手間を省くメリット
ログの整理をマウスで一つずつ選んでゴミ箱に捨てるのは、非常に時間がかかります。そこで活用するのがCLI(コマンドラインインターフェース)ツールとスクリプトです。CLIはキーボードの文字入力だけでコンピューターを操る道具、スクリプトはその命令を書き溜めた手順書です。
スクリプトを使えば、「一週間より前の古いログだけを自動で探し出して、圧縮して保存する」といった複雑な作業も、ボタン一つ(あるいは決まった時間に自動で)実行できるようになります。パソコンを触ったことがない人ほど、こうした自動化の恩恵は大きいです。人間がやるよりも正確で、ミスがないため、システムの安全を守る強力な味方になってくれます。
3. COBOLでログを出力する基本的なプログラム例
まずは、管理の対象となるログを作るCOBOLプログラムを見てみましょう。このプログラムは、実行されるたびに「作業を開始しました」というメッセージを画面に出し、それをログとして保存することを想定しています。
IDENTIFICATION DIVISION.
PROGRAM-ID. LOG-GEN.
PROCEDURE DIVISION.
DISPLAY "2026/05/07 10:00:00 - プログラムを開始します".
DISPLAY "処理を実行中です...".
DISPLAY "2026/05/07 10:00:05 - 全ての処理が正常に完了しました".
STOP RUN.
このプログラムを実行すると、以下のような結果が得られます。通常、この文字情報がそのままファイルとして保存されます。
2026/05/07 10:00:00 - プログラムを開始します
処理を実行中です...
2026/05/07 10:00:05 - 全ての処理が正常に完了しました
4. ログファイルに日付をつけて保存する運用スクリプト
ログファイルが常に同じ名前だと、次に動かしたときに内容が上書きされて消えてしまいます。そこで、ファイル名に「日付」を自動で入れるスクリプトを作ります。これをリネーム(名前変更)と呼びます。
以下のスクリプトは、今日の年月日を取得して、ログファイルの名前にくっつける作業を行います。これにより、「いつのログか」が一目でわかるようになります。
#!/bin/bash
# 1. 今日の日付を取得する(例:20260507)
TODAY=$(date +%Y%m%d)
# 2. COBOLを実行して一時的なログを作る
./LOG-GEN > temp.log
# 3. ログファイルの名前に日付をつけて保存する
mv temp.log "log_${TODAY}.txt"
echo "ログを保存しました:log_${TODAY}.txt"
5. 特定のキーワードが含まれるログを探し出す方法
たくさんのログの中から「エラー(ERROR)」が起きた場所だけを探すのは大変です。そんな時に役立つのが「grep(グレップ)」というCLIツールです。これは、大量の文字の中から特定の言葉を「虫眼鏡」で探すような機能です。
例えば、過去一ヶ月分のログから「失敗」という文字が入っている行だけを抜き出すことができます。これを活用すれば、トラブルが起きたときもすぐに原因を見つけることができます。初心者はまず、この「探し出す技術」を覚えるのがおすすめです。以下のコードは、エラー情報を出力するCOBOLプログラムの例です。
IDENTIFICATION DIVISION.
PROGRAM-ID. LOG-ERROR.
PROCEDURE DIVISION.
DISPLAY "CHECK: ファイルの読み込みを開始".
DISPLAY "ERROR: 指定されたファイルが見つかりません".
DISPLAY "CHECK: 処理を中断しました".
STOP RUN.
6. 古いログファイルを自動で削除するクリーニング機能
ログが溜まってきたら、古いものを消す仕組みが必要です。これをローテーションやクリーニングと呼びます。スクリプトを使えば、「30日以上前の古いファイルだけを削除する」といった指示が可能です。
「find(ファインド)」というコマンドを使うと、ファイルの「年齢」を判別できます。これをスクリプトに組み込んでおけば、あなたが寝ている間にコンピューターが勝手にフォルダを掃除してくれます。お部屋の掃除は大変ですが、パソコンの中の掃除はスクリプト一行で済んでしまうのです。
#!/bin/bash
# 保存場所の指定
LOG_DIR="./logs"
# 30日以上前のファイルを検索して削除する
# -mtime +30 が「30日より前」という意味です
echo "古いログを掃除しています..."
find $LOG_DIR -name "*.txt" -mtime +30 -delete
echo "掃除が完了しました。"
7. ログファイルを圧縮して保存スペースを節約する
「古いログを消したくないけれど、容量は節約したい」という場合は、圧縮(あっしゅく)という技術を使います。これは、ファイルの中身をギュッと凝縮してサイズを小さくすることです。布団圧縮袋をイメージすると分かりやすいでしょう。
COBOLのログはテキスト形式なので、圧縮すると驚くほどサイズが小さくなります。スクリプトの中で「前日のログを自動で圧縮する」という工程を入れれば、容量を10分の1以下に抑えることも珍しくありません。限られた保存場所を有効活用するための知恵です。
8. 異常を検知したときに通知を送る仕組み
ログ管理の究極の形は、異常が起きたときに人間へ知らせてくれる仕組みです。スクリプトの中でログを監視し、特定のキーワード(例えば「重大なエラー」など)が見つかった瞬間にメールを送ったり、画面に警告を出したりするように設定します。
これにより、エンジニアは一日中画面を眺めている必要がなくなります。「何かあったときだけ呼ばれる」という環境を作ることで、作業の負担を大幅に減らすことができます。以下のプログラムは、計算エラーが発生した状況を想定しています。これをスクリプトでキャッチするわけです。
IDENTIFICATION DIVISION.
PROGRAM-ID. CALC-LOG.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 VAL-A PIC 9(3) VALUE 100.
01 VAL-B PIC 9(3) VALUE 0.
01 ANS PIC 9(6).
PROCEDURE DIVISION.
IF VAL-B = 0 THEN
DISPLAY "CRITICAL_ERROR: ゼロでの割り算はできません"
ELSE
DIVIDE VAL-A BY VAL-B GIVING ANS
END-IF.
STOP RUN.
9. ログ管理をマスターして信頼される運用担当者へ
ここまで、ログファイルの作成から保存、検索、削除、そして通知までの流れを見てきました。一見地味な作業に思えるかもしれませんが、システム運用の現場では、こうした堅実なログ管理こそが最も重要視されます。何かトラブルがあったとき、唯一の手がかりになるのがログだからです。
プログラミング未経験の方は、まず自分の作ったプログラムがログを出す喜びを味わい、次にそのログをスクリプトで自由に操る楽しさを体験してください。一つずつスクリプトの命令を組み合わせていけば、いつの間にか大きなシステムを支えるプロの技術が身についているはずです。CLIツールを使いこなし、スマートなログ管理を目指しましょう!