バージョン選択

フォーラム

メニュー

オンライン状況

57 人のユーザが現在オンラインです。 (49 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 57
もっと...

サイト内検索

質問 > 管理機能 > ログローテーション処理について

管理機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
seasoft
投稿日時: 2010/9/16 1:52
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: ログローテーション処理について
> また過去のコードでは最後にsite.logを作成しておりますが、今のコードでは次回ログ書き込み時までsite.logファイルは存在しないかと・・・
> どこで作成しているのかまで、まだおっかけてはいませんが、
呼び出し順序次第で、現在のコードではsite.logが存在しない場合、最後のrenameで必ずWarningがでてしまうかと思われるのですが。

ファイルの生成は GC_Utils の中で、"a+" で fopen している部分になると思います。
その後で、ログローテーションしているので、同時処理が1本では発現しないと推測しています。

そうなると、実際にマルチスレッドといった観点で発生している状況かもしれませんね。

また、fopen や fwrite ではエラーを検出していませんので、その辺りでコケることがあると、rename の段階で警告が発生という流れも考えられそうです。


ちなみに、patapata 様がお試しになっている環境では、実際に PHP はマルチスレッドで動作していますか?

前述の当方テスト環境は、非マルチスレッドとなっています。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

patapata
投稿日時: 2010/9/16 0:36
対応状況: −−−
仙人
登録日: 2010/7/7
居住地: 神奈川県
投稿: 502
Re: ログローテーション処理について
チケット内容を見る限り、以前の処理とは大分動作が異なっていますよね。

例えば、MAX_LOG_QUANTITYを10→5に変えたり場合、過去のコードでは、ファイル数が5になりますが・・・今のコードでは、site.log.6からは無視されファイル数は10のままです。

また過去のコードでは最後にsite.logを作成しておりますが、今のコードでは次回ログ書き込み時までsite.logファイルは存在しないかと・・・
どこで作成しているのかまで、まだおっかけてはいませんが、
呼び出し順序次第で、現在のコードではsite.logが存在しない場合、最後のrenameで必ずWarningがでてしまうかと思われるのですが。

他にディレクトリの存在チェックなんかもとっぱらわれていますし

う〜ん。チケットに記されている対応以外の処理も含まれてのことならわかりますが・・・
また明日時間をみて調べてみます。
seasoft
投稿日時: 2010/9/15 23:34
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: ログローテーション処理について
2.5 デベロッパー版ですが、11クライアント同時接続でテストしましたが再現しないですね・・・
環境依存が強そうです。

EC-CUBE 2.5.0-dev
OS Linux (Fedora)
DBサーバ PostgreSQL 8.3.7
WEBサーバ Apache/2.2.9
PHP 5.2.9
GD Loaded


AMUAMU 様

> ・私が気付いたのは、renameでのファイル上書きは環境・設定依存する。

「設定」というのは、上記環境でも関与ありそうな部分はありますか?


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

AMUAMU
投稿日時: 2010/9/15 21:10
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: ログローテーション処理について
あら、このチケットの修正内容と質問を私も勘違いしていました。申し訳ないです。

patapataさんの環境で、Warningが出る理由はいまいち分かりませんが、この修正内容は問題があると私も認識しました。

・ご指摘の通りスレッドセーフでない
・私が気付いたのは、renameでのファイル上書きは環境・設定依存する。

もしかしたらpatapataさんについてはrename関数の依存によるものかもしれません。

当該チケットをリオープンしておきます。


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

patapata
投稿日時: 2010/9/15 18:59
対応状況: −−−
仙人
登録日: 2010/7/7
居住地: 神奈川県
投稿: 502
Re: ログローテーション処理について
回答ありがとございます。

チケットを確認いたしましたが、正式版Var2.4.4では既に対応されており、差分はないようです。
(背景:赤が削除 背景:緑が追加ですよね)
その上で、現象が発生しております。


gfLogRotation関数は、スレッドセーフにしなければならないような気がいたしますが・・・見当違いでしょうか?

追記:
現象確認方法と致しまして、
パラメータ設定で、MAX_LOG_SIZEを"1000"や"10000"等の小さい値に設定し、サイトのトップを何度かリロードする。
(パラメータ設定で、DEBUG_MODEをTrueに設定すれば画面にWarninngが出るのでわかりやすいかと・・・)
AMUAMU
投稿日時: 2010/9/15 18:14
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: ログローテーション処理について
下記の不具合チケットと、修正内容を確認されると良いと思います。

http://svn.ec-cube.net/open_trac/ticket/746


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

patapata
投稿日時: 2010/9/15 17:27
対応状況: −−−
仙人
登録日: 2010/7/7
居住地: 神奈川県
投稿: 502
ログローテーション処理について
環境:
EC-CUBE 2.4.4
OS Linux
DBサーバ MySQL 5.0.77
WEBサーバ Apache
PHP 5.1.6
Webブラウザ IE8

いつもお世話になっております。

現在ログローテーションが起きるタイミングにおいて、
Warningが発生しており原因を追いかけてみましたが、よくわからなかったので質問させて頂きました。

詳細:
関係ありそうな、設定は以下です。
MAX_LOG_QUANTITY = 5
MAX_LOG_SIZE = "1000000"
site.logのファイル権限は、全て"666"


Warning内容:
GC_Utils.phpのgfLogRotation関数にてrenameに失敗。
Warning: rename(・・・/site.log.1) [function.rename]: そのようなファイルやディレクトリはありません

またWarningだけなら特に気にしておりませんでしたが、上記Warningが発生した場合site.logファイルが消えてしまいます。
→例えば、site.log、site.log.1〜5までファイルが存在している状態でログローテーション処理が発生した場合、site.log.1やsite.log4のファイルがなくなってしまいます。

また、MAX_LOG_SIZE = "10000"に変えサイトトップで、何度かリロードを行い確認したところrename処理が何重にも走っているようです。これは想定された動作なのでしょうか?

-----------------参考-----------------------------------
function gfLogRotation($max_log, $max_size, $path) {
// ファイルが最大サイズを超えていない場合、終了
if (filesize($path) <= $max_size) return;

// アーカイブのインクリメント(削除を兼ねる)
for ($i = $max_log; $i >= 2; $i--) {
$path_old = "$path." . ($i - 1);
$path_new = "$path.$i";
if (file_exists($path_old)) {
rename($path_old, $path_new);
}
}

// 現在ファイルのアーカイブ
rename($path, "$path.1");
}

« 1 2 (3)
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,116名です
総投稿数は110,039件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1649
8
red
1570
9
mcontact
1298
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.