57742


td-agent をいれたのも設定したのも自分ではなくてほとんど分かってないレベルで申し訳ありません

FuelPHP が /var/log/ にはいたログを fluentd で s3 に転送していて  
Fuel から fluentd に送ってる部分はおそらくこれで

[code]

    class Log extends \Fuel\Core\Log
    {
      public static function _init() {
        parent::_init();
        $logSetting = \Config::load("logging","logging");
        $logHost = \Config::get("logging.api.host");
        $logPort = \Config::get("logging.api.port");
        $logTag = \Config::get("logging.api.name");
        static::$monolog->pushHandler(new FluentHandler(null, $logHost, $logPort, $logTag));
      }
    
    }
    
[/code]

fluentd の設定もおそらく以下で type forest というプラグイン？で処理されてます

[code]

    <match api.**>
      type forest
      id api_match
      subtype s3
    <template>
    aws_key_id XXXXXXXXXXXX
    aws_sec_key XXXXXXXXXXXXXXXXXXXXXXXX
    s3_bucket api.serverlog
    s3_region ap-northeast-1
    check_apikey_on_start false
    buffer_path /var/log/td-agent/${tag}
    path server_logs/%Y/%m/%d/${hostname}/${tag}/
    s3_object_key_format %{path}%{time_slice}_%{index}.%{file_extension}
    time_slice_format %Y-%m-%d-%H
    flush_interval 10m
    retry_wait 10s
    retry_limit 3
    buffer_chunk_limit 16m
    utc
    </template>
    
    </match>
    
[/code]

いずれもログのフォーマットを決めるような記述はなさそうなのですが

/var/log/api/YYYY/MM/DD.php にはかれたログは

[code]

    INFO - 2019-08-30 02:52:46 --> Fuel\Core\Request::__construct - Creating a new main Request with URI = "/user"
    
[/code]

という形式なのですがS3に転送されたログの中身が

[code]

    2019-08-30T02:30:17Z    api.log {"text":"Fuel\\Core\\Request::__construct - Creating a new main Request with URI = \"/user\"","level":"INFO"}
    
[/code]

という時刻とタグが付与されてログの中身は JSON 形式になってしまいます

このログの形式はどこで決まっているのでしょうか  
/var/log 以下の形式は Fuel 内でフォーマットで決められるみたいなので  
そこを CSV 形式にして S3 にも CSV のまま保存して Athena で見たいと思っていいるのですが  
どこを変更すれば /var/log と同じ内容のS3ファイルを作れるでしょうか

### 追記：

<https://github.com/tagomoris/fluent-plugin-forest>  
公式のドキュメントも呼んでみたのですがフォーマットを設定できるような箇所はなさそうに見えます


CC BY-SA 4.0
2019-08-30T03:00:46.000
57710
2019-08-31T18:26:05.967
question
fluentd
fluentd forest のログ形式


<https://docs.fluentd.org/v/0.12/formatter>

forest ではなく fluentd 自体のデフォルトの out_file というデータ形式のようです

[code]

    format single_value
    message_key text
    
[/code]

というのを追加してみたところ  
/var/log と同じ (JSON の text の中身) が保存されるようになりました

forest はまだよくわかってないんですが  
どちらかというと入力側でタグの分類をうまくやるようなプラグインで  
出力形式とは関係ないみたいです


CC BY-SA 4.0
2019-08-31T18:26:05.967
57742
2019-08-31T18:26:05.967
57710
answer