如何解决我可以使用 @google-cloud/logging Node.js 库来获取按日期过滤的条目吗?
我从我的项目的云日志记录中获得了此代码 getEntries
。
import { Logging } from "@google-cloud/logging";
const PROJECT_ID = "XXXXX";
const logging = new Logging({ projectId: PROJECT_ID });
const getAdminLogEntries = async () => {
const result = await logging.getEntries({
filter: `logName="projects/XXXXX/logs/my-custom-log-name"`,});
const entryList = result[0];
for (const entry of entryList) {
console.log(`entry.metadata: ${JSON.stringify(entry.metadata)}`);
console.log(`entry.data: ${JSON.stringify(entry.data)}`);
console.log(`---`);
}
};
getAdminLogEntries();
但我只得到 6 个结果(最旧的一个是昨天的)。我想这是因为查询不会回到太远的时间。可以按日期过滤吗?例如:from 2021-01-01 to 2021-01-31
?
解决方法
这是我发现的。
参考:
- https://cloud.google.com/logging/docs/view/advanced-queries
- https://cloud.google.com/logging/docs/reference/libraries#list_log_entries
我可以使用以下代码按日期过滤:
import { Logging } from "@google-cloud/logging";
const PROJECT_ID = "XXXX";
const logging = new Logging({ projectId: PROJECT_ID });
const filterItems = [
`logName="projects/XXXXX/logs/admin-logs"`,`timestamp >= "2021-02-01T00:00:00Z"`,`timestamp < "2021-03-01T00:00:00Z"`,`severity="WARNING"`,];
// JOINING FILTERS WITH "AND" OPERATOR
const filters = filterItems.join(" AND ");
const getAdminLogEntries = async () => {
const result = await logging.getEntries({
filter: filters,});
const entryList = result[0];
for (const entry of entryList) {
console.log(`entry.metadata.severity: ${JSON.stringify(entry.metadata.severity)}`);
console.log(`entry.metadata.timestamp: ${JSON.stringify(entry.metadata.timestamp)}`);
console.log(`entry.data.message: ${JSON.stringify(entry.data.message)}`);
console.log(`---`);
}
};
getAdminLogEntries();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。