お手軽(?)かつ合法的にプログラムからglogの挙動を制御する

google-glogは便利なロギングライブラリです。便利なんですが、困った事に、ドキュメントを見る限りだとコマンドライン引数からしか挙動を制御する事ができません。例えばログの出力先を指定したい場合は、-log_dirというオプションを渡して起動する必要があります。ソースを覗くと怪しい関数は沢山あるのですが、ドキュメント化されていないので、いつ使えなくなるのか良く分からない状態です。なので、個人で適当に使う分には良いですが、突然コンパイルできなくなると困る場合は怖くて使えません。

そこで、最近よくやるのが、argcとargvをプログラムで加工し、gflagsとglogの初期化関数に渡すという行為です。例えば、デフォルトで/tmpにログを吐かれると、だんだん/tmpが酷い事になっていくので、デフォルトではログをstderrに吐くようにしたいとします。このためにはまず、argvに"log_dir"が含まれるかどうかをチェックします。argvに"log_dir"が含まれない場合は、argvをstrdupしてさらに"-logtostderr"と"-stderrthreshold", "0"(任意のレベル)を加えた新しいargvを作ります。それに合わせてargcの数も調整します。そして、この加工済みのargcとargvを使ってgflagsとglogを初期化します。

一応この方法は原理的に末永く使うことができるはずです。なんか悲しいですね。合法と言い切れるもっと良い方法があったら教えて欲しいです。