演示如何列出日志条目。
深入探索
如需查看包含此代码示例的详细文档,请参阅以下内容:
代码示例
C#
如需了解如何安装和使用 Logging 客户端库,请参阅 Logging 客户端库。
private void ListLogEntries(string logId)
{
var client = LoggingServiceV2Client.Create();
LogName logName = new LogName(s_projectId, logId);
ProjectName projectName = new ProjectName(s_projectId);
var results = client.ListLogEntries(Enumerable.Repeat(projectName, 1), $"logName={logName.ToString()}",
"timestamp desc", callSettings: _retryAWhile);
foreach (var row in results)
{
Console.WriteLine($"{row.TextPayload.Trim()}");
}
}
Go
如需了解如何安装和使用 Logging 客户端库,请参阅 Logging 客户端库。
var entries []*logging.Entry
const name = "log-example"
lastHour := time.Now().Add(-1 * time.Hour).Format(time.RFC3339)
iter := adminClient.Entries(ctx,
// Only get entries from the "log-example" log within the last hour.
logadmin.Filter(fmt.Sprintf(`logName = "projects/%s/logs/%s" AND timestamp > "%s"`, projID, name, lastHour)),
// Get most recent entries first.
logadmin.NewestFirst(),
)
// Fetch the most recent 20 entries.
for len(entries) < 20 {
entry, err := iter.Next()
if err == iterator.Done {
return entries, nil
}
if err != nil {
return nil, err
}
entries = append(entries, entry)
}
return entries, nil
Java
如需了解如何安装和使用 Logging 客户端库,请参阅 Logging 客户端库。
import com.google.api.gax.paging.Page;
import com.google.cloud.logging.LogEntry;
import com.google.cloud.logging.Logging;
import com.google.cloud.logging.Logging.EntryListOption;
import com.google.cloud.logging.LoggingOptions;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimeZone;
public class ListLogEntries {
public static void main(String[] args) throws Exception {
// TODO(developer): Replace the variable value with valid log name before running the sample
// or provide it as an argument.
String logName = args.length > 0 ? args[0] : "test-log";
try (Logging logging = LoggingOptions.getDefaultInstance().getService()) {
// When composing a filter, using indexed fields, such as timestamp, resource.type, logName
// and
// others can help accelerate the results
// Full list of indexed fields here:
// https://cloud.google.com/logging/docs/view/advanced-queries#finding-quickly
// This sample restrict the results to only last minute to minimize number of API calls
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
calendar.add(Calendar.MINUTE, -1);
DateFormat rfc3339 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
String logFilter =
"logName=projects/"
+ logging.getOptions().getProjectId()
+ "/logs/"
+ logName
+ " AND timestamp>=\""
+ rfc3339.format(calendar.getTime())
+ "\"";
// List all log entries
Page<LogEntry> entries = logging.listLogEntries(EntryListOption.filter(logFilter));
while (entries != null) {
for (LogEntry logEntry : entries.iterateAll()) {
System.out.println(logEntry);
}
entries = entries.getNextPage();
}
}
}
}
Node.js
如需了解如何安装和使用 Logging 客户端库,请参阅 Logging 客户端库。
// Imports the Google Cloud client library
const {Logging} = require('@google-cloud/logging');
// Creates a client
const logging = new Logging();
/**
* TODO(developer): Uncomment the following line to run the code.
*/
// const logName = 'Name of the log from which to list entries, e.g. my-log';
const log = logging.log(logName);
async function printEntryMetadata() {
// List the most recent entries for a given log
// See https://googleapis.dev/nodejs/logging/latest/Logging.html#getEntries
const [entries] = await log.getEntries();
console.log('Logs:');
entries.forEach(entry => {
const metadata = entry.metadata;
console.log(`${metadata.timestamp}:`, metadata[metadata.payload]);
});
}
printEntryMetadata();
PHP
如需了解如何安装和使用 Logging 客户端库,请参阅 Logging 客户端库。
use Google\Cloud\Logging\LoggingClient;
/**
* Print the timestamp and entry for the project and logger.
*
* @param string $projectId The Google project ID.
* @param string $loggerName The name of the logger.
*/
function list_entries($projectId, $loggerName)
{
$logging = new LoggingClient(['projectId' => $projectId]);
$loggerFullName = sprintf('projects/%s/logs/%s', $projectId, $loggerName);
$oneDayAgo = date(\DateTime::RFC3339, strtotime('-24 hours'));
$filter = sprintf(
'logName = "%s" AND timestamp >= "%s"',
$loggerFullName,
$oneDayAgo
);
$options = [
'filter' => $filter,
];
$entries = $logging->entries($options);
// Print the entries
foreach ($entries as $entry) {
/* @var $entry \Google\Cloud\Logging\Entry */
$entryInfo = $entry->info();
if (isset($entryInfo['textPayload'])) {
$entryText = $entryInfo['textPayload'];
} else {
$entryPayload = [];
foreach ($entryInfo['jsonPayload'] as $key => $value) {
$entryPayload[] = "$key: $value";
}
$entryText = '{' . implode(', ', $entryPayload) . '}';
}
printf('%s : %s' . PHP_EOL, $entryInfo['timestamp'], $entryText);
}
}
Python
如需了解如何安装和使用 Logging 客户端库,请参阅 Logging 客户端库。
def list_entries(logger_name):
"""Lists the most recent entries for a given logger."""
logging_client = logging.Client()
logger = logging_client.logger(logger_name)
print("Listing entries for logger {}:".format(logger.name))
for entry in logger.list_entries():
timestamp = entry.timestamp.isoformat()
print("* {}: {}".format(timestamp, entry.payload))
Ruby
如需了解如何安装和使用 Logging 客户端库,请参阅 Logging 客户端库。
require "google/cloud/logging"
# log_name = "my_log_name"
logging = Google::Cloud::Logging.new
entries = logging.entries filter: "logName:#{log_name}",
max: 1000,
order: "timestamp desc"
entries.each do |entry|
puts "[#{entry.timestamp}] #{entry.log_name} #{entry.payload.inspect}"
end
后续步骤
如需搜索和过滤其他 Google Cloud 产品的代码示例,请参阅 Google Cloud 示例浏览器。