<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="logging_v2beta1.html">Google Cloud Logging API</a> . <a href="logging_v2beta1.projects.html">projects</a> . <a href="logging_v2beta1.projects.metrics.html">metrics</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(projectName, body, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a logs-based metric.</p>
<p class="toc_element">
  <code><a href="#delete">delete(metricName, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a logs-based metric.</p>
<p class="toc_element">
  <code><a href="#get">get(metricName, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a logs-based metric.</p>
<p class="toc_element">
  <code><a href="#list">list(projectName, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists logs-based metrics.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#update">update(metricName, body, x__xgafv=None)</a></code></p>
<p class="firstline">Creates or updates a logs-based metric.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(projectName, body, x__xgafv=None)</code>
  <pre>Creates a logs-based metric.

Args:
  projectName: string, The resource name of the project in which to create the metric. Example: `"projects/my-project-id"`. The new metric must be provided in the request. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter.
    "filter": "A String", # An [advanced logs filter](/logging/docs/view/advanced_filters). Example: `"logName:syslog AND severity>=ERROR"`.
    "name": "A String", # Required. The client-assigned metric identifier. Example: `"severe_errors"`. Metric identifiers are limited to 1000 characters and can include only the following characters: `A-Z`, `a-z`, `0-9`, and the special characters `_-.,+!*',()%/\`. The forward-slash character (`/`) denotes a hierarchy of name pieces, and it cannot be the first character of the name.
    "description": "A String", # A description of this metric, which is used in documentation.
  }

  x__xgafv: string, V1 error format.

Returns:
  An object of the form:

    { # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter.
      "filter": "A String", # An [advanced logs filter](/logging/docs/view/advanced_filters). Example: `"logName:syslog AND severity>=ERROR"`.
      "name": "A String", # Required. The client-assigned metric identifier. Example: `"severe_errors"`. Metric identifiers are limited to 1000 characters and can include only the following characters: `A-Z`, `a-z`, `0-9`, and the special characters `_-.,+!*',()%/\`. The forward-slash character (`/`) denotes a hierarchy of name pieces, and it cannot be the first character of the name.
      "description": "A String", # A description of this metric, which is used in documentation.
    }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(metricName, x__xgafv=None)</code>
  <pre>Deletes a logs-based metric.

Args:
  metricName: string, The resource name of the metric to delete. Example: `"projects/my-project-id/metrics/my-metric-id"`. (required)
  x__xgafv: string, V1 error format.

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(metricName, x__xgafv=None)</code>
  <pre>Gets a logs-based metric.

Args:
  metricName: string, The resource name of the desired metric. Example: `"projects/my-project-id/metrics/my-metric-id"`. (required)
  x__xgafv: string, V1 error format.

Returns:
  An object of the form:

    { # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter.
      "filter": "A String", # An [advanced logs filter](/logging/docs/view/advanced_filters). Example: `"logName:syslog AND severity>=ERROR"`.
      "name": "A String", # Required. The client-assigned metric identifier. Example: `"severe_errors"`. Metric identifiers are limited to 1000 characters and can include only the following characters: `A-Z`, `a-z`, `0-9`, and the special characters `_-.,+!*',()%/\`. The forward-slash character (`/`) denotes a hierarchy of name pieces, and it cannot be the first character of the name.
      "description": "A String", # A description of this metric, which is used in documentation.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectName, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists logs-based metrics.

Args:
  projectName: string, Required. The resource name of the project containing the metrics. Example: `"projects/my-project-id"`. (required)
  pageSize: integer, Optional. The maximum number of results to return from this request. You must check for presence of `nextPageToken` to determine if additional results are available, which you can retrieve by passing the `nextPageToken` value as the `pageToken` parameter in the next request.
  pageToken: string, Optional. If the `pageToken` parameter is supplied, then the next page of results is retrieved. The `pageToken` parameter must be set to the value of the `nextPageToken` from the previous response. The value of `projectName` must be the same as in the previous request.
  x__xgafv: string, V1 error format.

Returns:
  An object of the form:

    { # Result returned from ListLogMetrics.
    "metrics": [ # A list of logs-based metrics.
      { # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter.
          "filter": "A String", # An [advanced logs filter](/logging/docs/view/advanced_filters). Example: `"logName:syslog AND severity>=ERROR"`.
          "name": "A String", # Required. The client-assigned metric identifier. Example: `"severe_errors"`. Metric identifiers are limited to 1000 characters and can include only the following characters: `A-Z`, `a-z`, `0-9`, and the special characters `_-.,+!*',()%/\`. The forward-slash character (`/`) denotes a hierarchy of name pieces, and it cannot be the first character of the name.
          "description": "A String", # A description of this metric, which is used in documentation.
        },
    ],
    "nextPageToken": "A String", # If there are more results than were returned, then `nextPageToken` is included in the response. To get the next set of results, call this method again using the value of `nextPageToken` as `pageToken`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="update">update(metricName, body, x__xgafv=None)</code>
  <pre>Creates or updates a logs-based metric.

Args:
  metricName: string, The resource name of the metric to update. Example: `"projects/my-project-id/metrics/my-metric-id"`. The updated metric must be provided in the request and have the same identifier that is specified in `metricName`. If the metric does not exist, it is created. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter.
    "filter": "A String", # An [advanced logs filter](/logging/docs/view/advanced_filters). Example: `"logName:syslog AND severity>=ERROR"`.
    "name": "A String", # Required. The client-assigned metric identifier. Example: `"severe_errors"`. Metric identifiers are limited to 1000 characters and can include only the following characters: `A-Z`, `a-z`, `0-9`, and the special characters `_-.,+!*',()%/\`. The forward-slash character (`/`) denotes a hierarchy of name pieces, and it cannot be the first character of the name.
    "description": "A String", # A description of this metric, which is used in documentation.
  }

  x__xgafv: string, V1 error format.

Returns:
  An object of the form:

    { # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter.
      "filter": "A String", # An [advanced logs filter](/logging/docs/view/advanced_filters). Example: `"logName:syslog AND severity>=ERROR"`.
      "name": "A String", # Required. The client-assigned metric identifier. Example: `"severe_errors"`. Metric identifiers are limited to 1000 characters and can include only the following characters: `A-Z`, `a-z`, `0-9`, and the special characters `_-.,+!*',()%/\`. The forward-slash character (`/`) denotes a hierarchy of name pieces, and it cannot be the first character of the name.
      "description": "A String", # A description of this metric, which is used in documentation.
    }</pre>
</div>

</body></html>