大変、困っていますので宜しくお願いします。
社内で構築している、WEBサーバー(Apache)のエラーログに、
日本語の箇所が、16進数で表示されてしまいます。
Apacheのサイトで、以下のような文章を見つけましたが、
「認識不能」という箇所において、何故日本語が認識不能になってしまうのかがわからずに、解決に至っておりません。
尚、WEB画面の表示については、問題ありません。あくまで、エラーログのみ日本語の認識ができていないようです。
情報元URL:http://httpd.apache.org/docs/2.0/ja/mod/mod_log_ …
<引用 はじめ>
セキュリティ上の理由により 2.0.46 より印字不可能な文字と 他の特別な文字は、ほとんど \xhh という 文字列でエスケープされるようになりました。<引用 終わり>
*環境*
OS:CentOS 4.4 WEB:Apache 2(httpd-2.0.52-28.ent.centos4)
Perl:perl-5.8.5-36.RHE
LANG="en_US.UTF-8"(これは、日本語にしても同じ結果でした・・)
No.1ベストアンサー
- 回答日時:
Apache2.2も確認しましたが同じくセキュリティ上の理由と有るので、
logの出力formatをいじるのは諦めて
error_logを別fileにコンバートするスクリプトをおいたらどうでしょう?
#! /usr/bin/perl
$read_file='error_log';
$out_file = 'jp-'. $read_file .'.txt';
open (R,$read_file);
open (J,">$out_file");
while(<R>)
{s/\\x([a-f\d]{2})/pack("C", hex($1))/ieg;
print J;
}
close (R);
close (J);
print 'Success!! ' . localtime() ."\n\n";
__END__
こんなのを log_conv.pl などのfile名で置いて、コマンドラインから実行させれば出来ますけどね
そんな方法はイラン!ってことならご免です。
この回答への補足
ご回答の程、ありがとうございました。
こういった回避方法があるとの事で、大変参考になりました。
しかし、できましたらモジュールの追加や設定でエスケープ文字を回避したいと考えております。
今回の質問内容について、補足になりますが、このエラーログが表示されてしまうのは、
特定のCGIファイルでおきています。
これは、Perlのモジュールの追加で回避できる類のものでしょうか?
また、Apacheは、どの部分で、「印字不可能な文字」と判断しているのでしょうか?
(1.3系では問題なく表示されておりました)
質問が重なってしまい申し訳ありませんが、ご回答頂ける方は、ご教授の程、宜しくお願い致します。
インストールされている、Perlモジュール一覧
------------------------------------------
perl-CGI-Lite
perl-NKF
perl-Time-HiRes
perl-Filter
perl-Text-Template
perl-Crypt-DES
perl-DBI
perl-DBD-Oracle
------------------------------------------
No.2
- 回答日時:
となるとパイプ処理ですかね
http://httpd.apache.org/docs/2.0/ja/mod/core.htm …
によると
ErrorLog "|/usr/local/bin/httpd_errors"
と言う様に処理するプログラムを指定すれば出来るとありますが
私がやってみた限りではうまくいきませんでした。
httpd.confに
ErrorLog "|/home/hoge/er_jp" と記述してスクリプトを指定し
/home/hoge/er_jpではSTDINを読んで
1.そのままの内容を書き込み(デフォルトログ)
2.デコードして別fileに書き込み(日本語化ログ)
しましたが、Apacheの起動時のメッセージは記録されますが
.htaccessにわざと日本語を記述して500errorにしてもログに記録されませんでした
一応内容を貼っておきます
#! /usr/bin/perl
$en_file='/home/hoge/test_error_log.txt';
$jp_file = '/home/hoge/jp--er_log.txt';
open (E,">>$en_file");
open (J,">>$jp_file");
foreach(<STDIN>)
{
print E ;
s/\\x([a-f\d]{2})/pack("C", hex($1))/ieg;
print J ;
}
close (E);
close (J);
__END__
うちのはFedora5+Apache2.2.0ですので、その環境のためかもしれません。
>また、Apacheは、どの部分で、「印字不可能な文字」と判断しているのでしょうか?
セキュリティの意図としては制御文字を埋められることを避けるためでしょうが
実際には単純に半角英数字や記号の他はすべてエスケープしているのでは?
>これは、Perlのモジュールの追加で回避できる類のものでしょうか?
内容がわからないので何とも、、、
デバッグの手順としては(PerlのCGIの場合、file名をhoge.cgiとすると)
コマンドラインから
1. $ perl -wc hoge.cgi <=と打って Syntax OK が出ればOK
2. $ ./hoge.cgi <= 最初に意図したヘッダが出力されるかTEST
ブラウザで
3. hoge.cgi にアクセスしてみる
4. eror_log を見る
5. Suexecなら logs/suexec.log も見てみる ( http://oshiete1.goo.ne.jp/qa2469513.html )
ご回答の程、ありがとうございました。
Apacheの挙動については、不明のままですが、
ログファイルに、Perlで処理させて、日本語表示が可能になりましたので、この方向で処理をしたいと考えています。
大変、助かりました。ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- サーバー 別サーバに構築したApache+Tomcatの連携について 2 2023/03/06 23:23
- その他(IT・Webサービス) web会議中の文字起こし+翻訳ツールについて 2 2022/10/17 01:38
- 英語 ソシュール言語観による品詞、単語、辞書理解の誤り 4 2022/11/24 12:27
- オープンソース AWSドメイン名でApacheテスト・ページを表示させる方法を教えて下さい。 1 2023/04/26 15:59
- HTML・CSS リンクバナーのHTMLタグ。画像を変えたり、設置位置を変えるとバナー貼付け側はどう見える? 2 2023/02/01 12:01
- Android(アンドロイド) スマホの日本語入力の選択肢を変えるには 4 2023/07/29 19:07
- 日本語 公用文における句点の打ち方について 2 2022/05/07 16:47
- CAD・DTP 「機能ブロック図」の描画用フリーソフトを教えてください 1 2022/09/23 16:12
- Excel(エクセル) Excelで校閲をする方法はあるでしょうか(取扱説明書への掲載禁止用語の確認) 3 2022/06/11 22:51
- 日本語 「~人」と「~名」の使い分け 2 2022/06/02 11:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
auth.logが出力されない。
-
FedoraCore6を使用し、PostFix...
-
ssl_request_logの必要性について
-
expectを用いた正規表現[]のgre...
-
ログローテート
-
rsyncの実行時間
-
【ウイルス?】デスクトップに...
-
SolarisからSyslogを転送する設...
-
サブシステムがロックします。
-
bindにてlogがfailedになる
-
Solarisでのログ情報ファイル
-
tailとgrepの組み合わせて、結...
-
squidのアクセスログについて
-
/var/log/maillogへのログの書...
-
ログをもっと少なくしたい。
-
logrotateの再起動
-
dmesgと/var/log/にあるメッセージ
-
PowerShell と Get-WinEvent
-
squid 起動できません
-
Apache/2.0.54 (Debian GNU/Lin...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IEのイベントログをイベントビ...
-
logrotateの再起動
-
squidのアクセスログについて
-
ssl_request_logの必要性について
-
イベントログ 「シェルが停止し...
-
expectを用いた正規表現[]のgre...
-
コマンドプロンプトでのcopyコ...
-
vsftpを設定し試したら書き込み...
-
reboot 実行時のログについて
-
ログローテート
-
WINDOWS NT システムログファイ...
-
rsyncの実行時間
-
syslogからログが出力されなく...
-
evalが使えない場合
-
Apacheのエラーログで、日本語...
-
auth.logが出力されない。
-
suコマンドのログ
-
SolarisからSyslogを転送する設...
-
tailとgrepの組み合わせて、結...
-
ssl_error_logについて
おすすめ情報