2016-05-14 29 views
0

私はGoogle Compute EngineのUbuntu 14.04でnodeJSサーバーを実行しています。私は自分のアプリケーションのためにGoogleのクラウドのロギングを使用したいので、私はグーグルフルントロギングエージェントをインストールしましたhttps://cloud.google.com/logging/docs/agent/installationJSONのログノード同期でWinstonを使用してノードジョブ

ログを書き込むためにwinstonとwinston-syslogを使用しました。ここにコードがあります。

var winston = require('winston'); 
var winstonsyslog = require('winston-syslog').Syslog; 

var options = { 
    json : true 
}; 

winston.add(winston.transports.Syslog, options); 

私はJSONの代わりに、文字列としてログが表示されstructPayload代わりのtextPayloadを取得する方法

{ 
    metadata: {…}  
    textPayload: "May 14 10:47:44 localhost node[7633]: {"anything":"This is metadata","level":"info","message":"27"}"  
    insertId: "..."  
    log: "syslog.local0.info"  
} 

を取得しています

winston.log('info', "27", { anything: 'This is metadata' }); 

を使用してログを書いています。

+0

私も同じ問題を抱えています。私は最後に諦めました。[docs](https://cloud.google.com/appengine/articles/logging#cloud_logging_and_the_flexible_environment)に接尾辞 '.log.json'を持つログと、各行にインラインで有効なJSONオブジェクトがあることが必要です。でも、これで私はグーグルのクラウドロギングを通じて読み取ることができませんでした.... FYI: "testPayload"のようにJSONオブジェクトではありません – farridav

+0

Googleのクラウドロギングサービスにログインするためのgcloud nodeJSクライアントを使用しています。どういうわけかhttps://googlecloudplatform.github.io/gcloud-node/#/docs/v0.34.0/logging/log – tacticurv

+0

のように動作します。私はそれがFluentdのフォグの根底にあるフォグをタップしていると思います...私はログを取得することができました[こちら](https://cloud.google.com/logging/docs/view/logs_index#common)と同じフォーマットを模倣して作業しています。正しい方法は[ログエージェント]を使用することですhttps://cloud.google.com/logging/docs/agent/) – farridav

答えて

0

ロギングエージェントには独自の設定ファイルがあり、そのほとんどはformat noneです(https://github.com/GoogleCloudPlatform/fluentd-catch-all-config参照)。したがって、すべてのログ行はtextPayloadになります。

解決策は、独自の流暢な構成ファイルを作成し、fluent-plugin-google-cloudを出力として使用することです。 fluent-plugin-google-cloudをに直接インストールしてください。、ロギングエージェントを使用しないでください。エントリが有効なJSONであれば、structPayloadを持つStackdriverのエントリが正しく表示されます。キー/値フィルタも同様に機能します。

私はウィンストンを使用していないが、ここではサンプルの構成であることがない:

<source> 
    @type tail 
    format apache 
    path /var/log/apache/access.log 
    tag apache.access 
</source> 

<match **> 
    @type google_cloud 
    buffer_chunk_limit 10k 
</match> 

お知らせbuffer_chunk_limit 10k、あまりにも大きな値に設定するか、Google::Apis::ClientError badRequest: Request payload size exceeds the limitをもたらす可能性がデフォルトでそれを残します。

関連する問題