API でのログのエクスポート

このガイドでは、Stackdriver Logging API v2 を使用して Stackdriver Logging からログをエクスポートする方法について説明します。代わりにログビューアを使用してエクスポートを設定するには、ログビューア: ログをエクスポートするをご覧ください。コマンドライン SDK を使用してエクスポートを設定するには、SDK: ログのエクスポートをご覧ください。エクスポートしたログを探して使用するには、エクスポートしたログの使用をご覧ください。

シンクの概要

ログエントリのエクスポートを制御するには、Stackdriver Logging でシンクを作成します。シンクには、次の情報が含まれます。

  • 親の中のシンクに名前を付けるシンク識別子。例

    "my-first-sink"
    
  • 親リソース—シンクとシンクがエクスポートできるログを所有するプロジェクト、フォルダ、請求先アカウント、または組織。 親の形式は次のとおりです。

    "projects/[PROJECT_ID]"
    "organizations/[ORGANIZATION_ID]"
    "folders/[FOLDER_ID]"
    "billingAccounts/[BILLING_ACCOUNT_ID]"
    
  • include children パラメータ: 組織内のシンクは、その組織に属するプロジェクトが所有するログのエクスポートを選択できます。

  • エクスポートするログエントリを選択するログフィルタ。 詳しくは、高度なログフィルタをご覧ください。次の例は、指定した Compute Engine VM インスタンスからの、重大度が WARNING 以上のすべてのログエントリと一致します。

    "resource.type = gce_instance AND \
       resource.labels.instance_id = "1428064241541024269" AND \
       severity >= WARNING"
    
  • ログエントリのエクスポート先。これは、Cloud Storage バケット、BigQuery データセット、Cloud Pub/Sub トピックのいずれかに設定することができ、どれも GCP プロジェクトに属している必要があります。 エクスポート先の形式は次のとおりです。

    "storage.googleapis.com/[BUCKET_ID]"
    "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET_ID]"
    "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
    

    ログはどのプロジェクト内のエクスポート先にもエクスポートできます。シンクの作成者にはエクスポート先へのアクセス権限は必要はありません。次に説明するシンクのライター サービス アカウントのみにアクセス権限が必要です。

  • ライターの ID。これはサービス アカウント名です。エクスポート先のオーナーは、このサービス アカウントにエクスポート先への書き込み権限を付与する必要があります。 ログのエクスポート時に、Stackdriver Logging はこの ID を承認に使用します。セキュリティを高めるために、新しいシンクは固有の一意のサービス アカウントを取得します。

    [GENERATED_ID_1]@[GENERATED_ID_2].iam.gserviceaccount.com
    

    古いシンクはこのライターに共有サービス アカウントを使用することがあります。

    cloud-logs@system.gserviceaccount.com
    

    詳しくは、エクスポート先の権限をご覧ください。

  • 出力バージョン。これは V2(デフォルト)または V1(古い API との互換性のため)です。詳しくは、ログエントリの変更をご覧ください。

  • オプションの開始時刻終了時刻。シンクは、開始時刻に開始し、終了時刻より前に終了するログエントリをエクスポートします。詳しくは、このページの開始時刻と終了時刻をご覧ください。時刻の形式の例は次のとおりです。

    "2016-04-07T15:56:47.000Z"
    

詳しくは、LogSink タイプと projects.sinks.create API メソッドをご覧ください。

シンクの仕組み

ログエントリがプロジェクト、フォルダ、請求先アカウント、または組織に到着するたびに、Stackdriver Logging はログエントリをすべての既存シンク内のフィルタと比較します。フィルタがログエントリと一致する各シンクは、ログエントリのコピーをシンクのエクスポート先に書き込みます。

組織シンクの includeChildren フィールドが true に設定されている場合、組織内のすべてのプロジェクト、フォルダ、請求先アカウントに到着したログエントリも、その組織シンクと比較されます。

フォルダシンクの includeChildren フィールドが true に設定されている場合、シンクのフォルダ内のすべてのプロジェクトとフォルダに到着したログエントリも、そのフォルダシンクと比較されます。

シンクは、次の理由で一致するログエントリをエクスポートしないことがあります。

  • シンクの開始時刻が将来になっている。
  • シンクの終了時刻が過去になっている。
  • シンクのライター ID に、エクスポート先にログを書き込む権限がない。シンクのライターがエクスポート先にログエントリを書き込む権限を取得するまで、エラーが発生します。

エクスポート先でのエクスポートされたログの検索について詳しくは、エクスポートしたログの可用性をご覧ください

シンクを作成する

このセクションでは、シンクの作成方法と変更方法について説明します。シンクは、シンクを含む同じリソース(特定のプロジェクト、フォルダ、請求先アカウント、または組織)からのログのみエクスポートできます。

一意のライター ID を使用する

一意のライター ID か、シンク用の下位互換の共有ライター ID を使用できます。セキュリティを高めるために、すべての新規シンクには一意のライター ID を使用することをおすすめします。一意のライターなら、この ID に対して書き込み権限を付与しても、他のシンクにこのエクスポート先への書き込みが許可されることはないことがエクスポート先の管理者に対して明確になります。

シンクの親がプロジェクトでない場合、もしくはシンクを含むプロジェクトとは別のプロジェクト内のエクスポート先にエクスポートする場合は、一意のライターを使用する必要があります。共有ライターは、エクスポート先とシンクが同じプロジェクトにある場合にのみ機能します。

次の手順は、シンクを作成または変更する方法を示しています。この手順により、シンクのライターにエクスポート先への書き込み権限が付与される前にシンクでログエントリのエクスポートを開始した場合に発生するエラー メッセージを回避できます。

  1. 必要に応じて、シンクのエクスポート先を作成します。

  2. API メソッド projects.sinks.create または projects.sinks.update を呼び出してシンクを作成または変更します。これらの手順では次のパラメータが重要です。

    • uniqueWriterIdentitytrue に設定します。シンクを更新するときに、共有ライターから一意のライターに変更することができます。既存のシンクがすでに一意のライターを使用している場合、更新されたシンクは同じライターを使用します。
    • startTime を将来の時刻に設定します。少なくとも、新しいライターにエクスポート先への書き込み権限を付与するのに十分な時間を確保してください。

    メソッドは、新しいライター ID を含む新しいシンクを返します。

  3. 新しいシンクのライター ID をエクスポート先の権限リストに追加し、ライターにエクスポート先への書き込み権限を付与します。

  4. 新しいシンクの開始時刻になるまで待つか、projects.sinks.update を使用してシンクから開始時刻を削除します。 シンクはエクスポート先へのログエントリのエクスポートを開始します。

共有ライター ID を使用する

シンクがエクスポート先と同じプロジェクトにある場合にのみ、下位互換の共有ライター ID を使用できます。それ以外の場合、共有ライターはエクスポート先への書き込み権限を取得できません。

共有ライターでシンクを作成または更新するには、次の手順に従います。

  1. 必要に応じて、シンクのエクスポート先を作成します。

  2. 次のいずれかのライター(すべて同等)をエクスポート先の権限リストに追加し、ライターにエクスポート先への書き込み権限を付与します。

    • グループ cloud-logs@google.com
    • サービス アカウント cloud-logs@system.gserviceaccount.com
  3. API メソッド projects.sinks.create または projects.sinks.update を呼び出してシンクを作成または変更します。これらの手順に関連するパラメータは次の通りです。

    • uniqueWriterIdentityfalse に設定します。シンクを更新する場合、既存のシンクはすでに共有ライターを使用している必要があります。一意のライターから共有ライターにシンクを変更することはできません。

    新しいシンクは、すぐにログエントリのエクスポートを開始します。

開始時刻と終了時刻を使用する

シンクは、オプションで開始時刻、終了時刻、またはその両方を持つことができます。ログエントリのタイムスタンプが開始時刻と同じかそれより大きく、終了時刻よりも小さい場合、そのログエントリはエクスポートされます。開始時刻と終了時刻の用途を次にいくつか示します。

  • エクスポートを遅延させる。開始時刻を使用して、特定の時刻(たとえば、1 日の始まり)にエクスポートを開始します。新しいシンクを遅延させて、シンクのライターにエクスポート先への書き込み権限を付与する時間を確保することもできます。

  • シンクを変更する。ログエントリの重複や消失を避けるため、1 つのシンクを停止した後で別のシンクを開始するには、2 番目のシンクの開始時刻を最初のシンクの終了時刻に設定します。

開始時刻または終了時刻を指定しない場合、シンクが作成されるとエクスポートが開始し、シンクが削除されると終了します。projects.sinks.update を使用して開始時刻と終了時刻を設定または変更できます。

シンクの時刻とログエントリのタイムスタンプ

ログエントリの timestamp フィールドはログエントリを書き込むアプリケーションによって設定され、タイムスタンプが現在の時刻と正しく同期しない可能性があります。 また、ログエントリが Stackdriver Logging に送信されてからエクスポート先によって受信されるまでの間に遅延が発生することがあります。 シンクの開始時刻と終了時刻を正確に設定する必要がある場合は、次のようにします。

  • タイムスタンプがシンクの開始時刻と等しいかそれより大きいログエントリを Stackdriver Logging がすべてエクスポートするようにするには、シンクを作成し、シンクの開始時刻の少なくとも数分前にそのエクスポート先を準備します。
  • タイムスタンプがシンクの終了時刻より小さいすべてのログエントリを Stackdriver Logging がエクスポートするようにするには、シンクの終了時刻の後しばらくの間シンクとそのエクスポート先を留保します。Google Cloud Storage にエクスポートする場合、すべてのログエントリがエクスポート先バケットに表示されるまでに数時間かかることがあります。他のエクスポート先については、遅延を数分にする必要があります。

アクセス制御

エクスポートされたログへのアクセス制御に関連して 3 つの問題があります。

  • ユーザーまたはアプリケーションにシンクの作成と変更を許可する。
  • シンクのライター ID がエクスポートされたログをエクスポート先に書き込むことを許可する。
  • ユーザーまたはアプリケーションにエクスポートされたログの読み取りまたは変更を許可する。

シンクを管理する

シンクを作成および表示する機能は、シンクの親の Logging IAM 役割によって制御されます。

  • シンクを作成または変更するには、ユーザーまたはアプリケーションが IAM 役割 Logging / ログ設定ライターを持つか、シンクの親プロジェクトまたは他の親リソースのオーナーである必要があります。

  • 既存のシンクを表示するには、ユーザーまたはアプリケーションが IAM 役割 Logging / ログ閲覧者を持つか、シンクの親プロジェクトまたは他の親リソースの閲覧者である必要があります。

エクスポート先に書き込む

Stackdriver Logging によるシンクを介したログのエクスポートは、さまざまなライター ID で実行できます。

ライター ID タイプ シンクの作成時
cloud-logs@google.com グループ uniqueWriterIdentity=false
cloud-logs@system.gserviceaccount.com サービス アカウント uniqueWriterIdentity=false
xxxxxxx@yyyyyy.gserviceaccount.com サービス アカウント uniqueWriterIdentity=true

最初の 2 つのライターは同等です。3 番目の ID は各シンクに固有のライターで、シンクの親以外のプロジェクトのエクスポート先にログをエクスポートできるという利点があります。シンクの親がプロジェクトでない場合は、すべてのエクスポート先がプロジェクトにあるため、一意のライターを使用する必要があります。

ライターの種類を選んだら、それぞれのエクスポート先の種類に適した方法で使用します。

  • Cloud Storage では、ライターをエクスポート先バケットの権限リストに追加し、ライターにオーナー アクセス権、または利用可能な場合はより限定された IAM 役割を付与します。

  • BigQuery では、ライターをエクスポート先のデータセットの権限リストに追加し、ライターに編集者アクセス権を付与します。

  • Cloud Pub/Sub では、ライターをエクスポート先トピックの権限リストに追加し、ライターに PubSub / パブリッシャーまたは編集者アクセス権を付与します。

エクスポート先から読み取る

エクスポートされたログエントリへのアクセスを制御するのは、エクスポート先の責任です。たとえば、Stackdriver Logging は、Stackdriver Logging に保持されている監査ログの削除や変更を防止し、プライベート監査ログへのアクセスを制限することができます。監査ログがエクスポートされると、エクスポートされたコピーは Stackdriver Logging の制御下から外れます。

v1 API から v2 API にシンクを移行する

Stackdriver Logging API v1 はサポートが終了したため、新しいシンクはすべて、新しいシンクのデフォルトである Stackdriver Logging API v2 形式でログエントリをエクスポートする必要があります。v1 シンクを v2 に移行するには、Stackdriver Logging API v2 に移行するをご覧ください。

コードサンプル

次のコードサンプルでは、Stackdriver Logging API v2 を使用しています。

シンクを一覧表示する

プロジェクト内のシンクを一覧表示して、ログがエクスポートされる場所を追跡します。

C#

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

private void ListSinks()
{
    var sinkClient = ConfigServiceV2Client.Create();
    ProjectName projectName = new ProjectName(s_projectId);
    var listOfSinks = sinkClient.ListSinks(ParentNameOneof.From(projectName),
        callSettings: RetryAWhile);
    foreach (var sink in listOfSinks)
    {
        Console.WriteLine($"{sink.Name} {sink.ToString()}");
    }
}

Go

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

ctx := context.Background()

var sinks []string
it := client.Sinks(ctx)
for {
	sink, err := it.Next()
	if err == iterator.Done {
		break
	}
	if err != nil {
		return nil, err
	}
	sinks = append(sinks, sink.ID)
}

Java

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

Page<Sink> sinks = logging.listSinks(ListOption.pageSize(100));
for (Sink sink : sinks.iterateAll()) {
  // do something with the sink
}

Node.js

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

function listSinks (callback) {
  var logging = Logging();

  // See https://googlecloudplatform.github.io/google-cloud-node/#/docs/logging/latest/logging?method=getSinks
  logging.getSinks(function (err, sinks) {
    if (err) {
      return callback(err);
    }

    console.log('Found %d sink(s)!', sinks.length);
    return callback(null, sinks);
  });
}

PHP

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

/**
 * List log sinks.
 *
 * @param string $projectId
 * @return ItemIterator<Google\Cloud\Logging\Sink>
 */
function list_sinks($projectId)
{
    $logging = new LoggingClient(['projectId' => $projectId]);
    return $logging->sinks();
}

Python

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

def list_sinks():
    """Lists all sinks."""
    logging_client = logging.Client()

    sinks = list(logging_client.list_sinks())

    if not sinks:
        print('No sinks.')

    for sink in sinks:
        print('{}: {} -> {}'.format(sink.name, sink.filter_, sink.destination))

Ruby

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

require "google/cloud/logging"

logging = Google::Cloud::Logging.new project: "my-gcp-project-id"

logging.sinks.each do |sink|
  puts "#{sink.name}: #{sink.filter} -> #{sink.destination}"
end

シンクを作成する

プロジェクトにシンクを作成して、ログエントリを送信できるエクスポート先を設定します。シンクを作成する前に、エクスポート先にログを書き込むための cloud-logs@system.gserviceaccount.com 権限が付与されていることを確認してください。[Stackdriver Logging のエクスポートしたログを書き込む権限を設定する][ログ権限] をご覧ください。

C#

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

        private void CreateSink(string sinkId, string logId)
        {
            var sinkClient = ConfigServiceV2Client.Create();
            CreateSinkRequest sinkRequest = new CreateSinkRequest();
            LogSink myLogSink = new LogSink();
            myLogSink.Name = sinkId;

            // This creates a sink using a Google Cloud Storage bucket
            // named the same as the projectId.
            // This requires editing the bucket's permissions to add the Entity Group
            // named 'cloud-logs@google.com' with 'Owner' access for the bucket.
            // If this is being run with a Google Cloud service account,
            // that account will need to be granted 'Owner' access to the Project.
            // In Powershell, use this command:
            // PS > Add-GcsBucketAcl <your-bucket-name> -Role OWNER -Group cloud-logs@google.com
            myLogSink.Destination = "storage.googleapis.com/" + s_projectId;
            LogName logName = new LogName(s_projectId, logId);
            myLogSink.Filter = $"logName={logName.ToString()}AND severity<=ERROR";
            ProjectName projectName = new ProjectName(s_projectId);
            sinkRequest.Sink = myLogSink;
            sinkClient.CreateSink(ParentNameOneof.From(projectName), myLogSink, RetryAWhile);
            Console.WriteLine($"Created sink: {sinkId}.");
        }

Go

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

ctx := context.Background()
_, err := client.CreateSink(ctx, &logadmin.Sink{
	ID:          "severe-errors-to-gcs",
	Destination: "storage.googleapis.com/logsinks-bucket",
	Filter:      "severity >= ERROR",
})

Java

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

SinkInfo sinkInfo = SinkInfo.of(sinkName, DatasetDestination.of(datasetName));
Sink sink = logging.create(sinkInfo);

Node.js

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

function createSink (sinkName, bucketName, filter, callback) {
  var logging = Logging();
  var storage = Storage();

  // The destination can be a Cloud Storage bucket, a Cloud Pub/Sub topic,
  // or a BigQuery dataset. In this case, it is a Cloud Storage Bucket.
  // See https://cloud.google.com/logging/docs/api/tasks/exporting-logs for
  // information on the destination format.
  var destination = storage.bucket(bucketName);
  var sink = logging.sink(sinkName);

  /**
   * The filter determines which logs this sink matches and will be exported
   * to the destination. For example a filter of 'severity>=INFO' will send
   * all logs that have a severity of INFO or greater to the destination.
   * See https://cloud.google.com/logging/docs/view/advanced_filters for more
   * filter information.
   */
  var config = {
    destination: destination,
    filter: filter
  };

  // See https://googlecloudplatform.github.io/google-cloud-node/#/docs/logging/latest/logging/sink?method=create
  sink.create(config, function (err, sink, apiResponse) {
    if (err) {
      return callback(err);
    }

    console.log('Created sink %s to %s', sinkName, bucketName);
    return callback(null, sink, apiResponse);
  });
}

PHP

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

/** Create a log sink.
 *
 * @param string $projectId The Google project ID.
 * @param string $sinkName The name of the sink.
 * @param string $destination The destination of the sink.
 * @param string $filterString The filter for the sink.
 */
function create_sink($projectId, $sinkName, $destination, $filterString)
{
    $logging = new LoggingClient(['projectId' => $projectId]);
    $logging->createSink(
        $sinkName,
        $destination,
        ['filter' => $filterString]
    );
}

Python

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

def create_sink(sink_name, destination_bucket, filter_):
    """Creates a sink to export logs to the given Cloud Storage bucket.

    The filter determines which logs this sink matches and will be exported
    to the destination. For example a filter of 'severity>=INFO' will send
    all logs that have a severity of INFO or greater to the destination.
    See https://cloud.google.com/logging/docs/view/advanced_filters for more
    filter information.
    """
    logging_client = logging.Client()

    # The destination can be a Cloud Storage bucket, a Cloud Pub/Sub topic,
    # or a BigQuery dataset. In this case, it is a Cloud Storage Bucket.
    # See https://cloud.google.com/logging/docs/api/tasks/exporting-logs for
    # information on the destination format.
    destination = 'storage.googleapis.com/{bucket}'.format(
        bucket=destination_bucket)

    sink = logging_client.sink(
        sink_name,
        filter_,
        destination)

    if sink.exists():
        print('Sink {} already exists.'.format(sink.name))
        return

    sink.create()
    print('Created sink {}'.format(sink.name))

Ruby

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

require "google/cloud/logging"

logging = Google::Cloud::Logging.new project: "my-gcp-project-id"
storage = Google::Cloud::Storage.new project: "my-gcp-project-id"
bucket  = storage.create_bucket "my-logs-bucket"

# Grant owner permission to Cloud Logging service
email = "cloud-logs@google.com"
bucket.acl.add_owner "group-#{email}"

sink = logging.create_sink "my-sink", "storage.googleapis.com/#{bucket.id}"

シンクを更新する

エクスポート先を変更するには、プロジェクト内のシンクを更新します。たとえば、毎月のログのエクスポート先として、Cloud Storage バケットを変更したい場合があります。

シンクを更新するには、シンク名と新しいエクスポート先を格納する新しい LogSink オブジェクトを指定します。シンクを更新する前に、シンクのライター ID に、ログをエクスポート先に書き込む権限が付与されていることを確認してください。 [Stackdriver Logging のエクスポートしたログを書き込む権限を設定する][ログ権限] をご覧ください。

C#

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

private void UpdateSinkLog(string sinkId, string logId)
{
    var sinkClient = ConfigServiceV2Client.Create();
    LogName logName = new LogName(s_projectId, logId);
    SinkName sinkName = new SinkName(s_projectId, sinkId);
    var sink = sinkClient.GetSink(SinkNameOneof.From(sinkName), RetryAWhile);
    sink.Filter = $"logName={logName.ToString()}AND severity<=ERROR";
    sinkClient.UpdateSink(SinkNameOneof.From(sinkName), sink, RetryAWhile);
    Console.WriteLine($"Updated {sinkId} to export logs from {logId}.");
}

Go

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

ctx := context.Background()
_, err := client.UpdateSink(ctx, &logadmin.Sink{
	ID:          "severe-errors-to-gcs",
	Destination: "storage.googleapis.com/logsinks-new-bucket",
	Filter:      "severity >= INFO",
})

Java

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

SinkInfo sinkInfo = SinkInfo.newBuilder(sinkName, DatasetDestination.of(datasetName))
    .setVersionFormat(SinkInfo.VersionFormat.V2)
    .setFilter("severity>=ERROR")
    .build();
Sink sink = logging.update(sinkInfo);

Node.js

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

function updateSink (sinkName, filter, callback) {
  var logging = Logging();
  var sink = logging.sink(sinkName);

  /**
   * The filter determines which logs this sink matches and will be exported
   * to the destination. For example a filter of 'severity>=INFO' will send
   * all logs that have a severity of INFO or greater to the destination.
   * See https://cloud.google.com/logging/docs/view/advanced_filters for more
   * filter information.
   */
  var metadata = {
    filter: filter
  };

  // See https://googlecloudplatform.github.io/google-cloud-node/#/docs/logging/latest/logging/sink?method=setMetadata
  sink.setMetadata(metadata, function (err, apiResponse) {
    if (err) {
      return callback(err);
    }

    console.log('Updated sink: %s', sinkName);
    return callback(null, apiResponse);
  });
}

PHP

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

/**
 * Update a log sink.
 *
 * @param string $projectId
 * @param string sinkName
 * @param string $filterString
 */
function update_sink($projectId, $sinkName, $filterString)
{
    $logging = new LoggingClient(['projectId' => $projectId]);
    $sink = $logging->sink($sinkName);
    $sink->update(['filter' => $filterString]);
}

Python

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

def update_sink(sink_name, filter_):
    """Changes a sink's filter.

    The filter determines which logs this sink matches and will be exported
    to the destination. For example a filter of 'severity>=INFO' will send
    all logs that have a severity of INFO or greater to the destination.
    See https://cloud.google.com/logging/docs/view/advanced_filters for more
    filter information.
    """
    logging_client = logging.Client()
    sink = logging_client.sink(sink_name)

    sink.reload()

    sink.filter_ = filter_
    print('Updated sink {}'.format(sink.name))
    sink.update()
    # [END update]

Ruby

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

require "google/cloud/logging"

logging = Google::Cloud::Logging.new project: "my-gcp-project-id"
storage = Google::Cloud::Storage.new project: "my-gcp-project-id"
bucket  = storage.bucket "new-destination-bucket"
sink    = logging.sink "my-sink"

sink.destination = "storage.googleapis.com/#{bucket.id}"

sink.save

シンクを削除する

シンクを経由してログエントリをエクスポートしなくなった場合は、プロジェクトからそのシンクを削除します。

C#

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

private void DeleteSink(string sinkId)
{
    var sinkClient = ConfigServiceV2Client.Create();
    SinkName sinkName = new SinkName(s_projectId, sinkId);
    sinkClient.DeleteSink(SinkNameOneof.From(sinkName), RetryAWhile);
    Console.WriteLine($"Deleted {sinkId}.");
}

Go

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

ctx := context.Background()
if err := client.DeleteSink(ctx, "severe-errors-to-gcs"); err != nil {
	return err
}

Java

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

boolean deleted = logging.deleteSink(sinkName);
if (deleted) {
  // the sink was deleted
} else {
  // the sink was not found
}

Node.js

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

function deleteSink (sinkName, callback) {
  var logging = Logging();
  var sink = logging.sink(sinkName);

  // See https://googlecloudplatform.github.io/google-cloud-node/#/docs/logging/latest/logging/sink?method=delete
  sink.delete(function (err, apiResponse) {
    if (err) {
      return callback(err);
    }

    console.log('Deleted sink: %s', sinkName);
    return callback(null, apiResponse);
  });
}

PHP

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

/** Delete a log sink.
 *
 * @param string $projectId The Google project ID.
 * @param string $sinkName The name of the sink.
 */
function delete_sink($projectId, $sinkName)
{
    $logging = new LoggingClient(['projectId' => $projectId]);
    $logging->sink($sinkName)->delete();
}

Python

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

def delete_sink(sink_name):
    """Deletes a sink."""
    logging_client = logging.Client()
    sink = logging_client.sink(sink_name)

    sink.delete()

    print('Deleted sink {}'.format(sink.name))

Ruby

Stackdriver Logging クライアントのインストールと作成の詳細については、Stackdriver Logging クライアント ライブラリをご覧ください。

require "google/cloud/logging"

logging = Google::Cloud::Logging.new project: "my-gcp-project-id"

sink = logging.sink "my-sink"
sink.delete

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。