java - 在 Jenkins 日志之外记录 Jenkins 操作
问题描述
我想在 var/jenkins/logs (Jenkins 的默认日志位置)之外的单独文件中记录一些 INFO 消息,但我找不到任何工作示例。
登录 Jenkins 日志很简单:
static final Logger LOGGER = Logger.getLogger([YOUR_CLASS_NAME].class.getName());
LOGGER.log(Level.INFO, [MESSAGE]);
但我不确定如何将消息记录在单独的文件中。
任何帮助深表感谢!
回复后的补充
我要记录的上下文在我编写的自定义插件中,我基本上用我的自定义比较器覆盖了 Jenkins 中的默认比较器。根据某些标准,作业在构建队列中被视为比其他作业更优先。
@Override
public int compare(Queue.BuildableItem lhs, Queue.BuildableItem rhs) {
if (shouldBePrioritized(lhs) && !shouldBePrioritized(rhs)) {
LOGGER.log(Level.INFO, "[BQP] Comparing " + lhs.task.getName() + "and " + rhs.task.getName() + ". Result: " + lhs.task.getName());
return -1;
}
if (shouldBePrioritized(rhs) && !shouldBePrioritized((lhs))) {
LOGGER.log(Level.INFO, "[BQP] Comparing " + lhs.task.getName() + "and " + rhs.task.getName() + ". Result: " + rhs.task.getName());
return 1;
}
LOGGER.log(Level.INFO, "[BQP] Comparing " + lhs.task.getName() + "and " + rhs.task.getName() + ". Result: equal");
return super.compare(lhs, rhs);
}
我目前使用此 LOGGER.log() 将比较记录到 Jenkins 日志中,但我想将比较记录在运行 Jenkins 的 Docker 容器所在的 VM 上的单独文件中,但我认为这超出了问题。现在,如果我设法将该信息记录在 Jenkins 容器内的文件中,那就没问题了。
谢谢!
解决方案
您必须为您获得的 Logger 添加一个自定义处理程序。
static final LOGGER = createLogger();
private static Logger createLogger() {
Logger logger = Logger.getLogger(MyClass.class.getName());
FileHandler handler = new FileHandler("/tmp/mylog.log", 1024 * 1024, 10, true); // You can use any variable as a first argument, including some constants from other classes too!
handler.setFormatter(new SimpleFormatter());
logger.addHandler(handler);
return logger;
}
文档在这里解释了这一点(在 Groovy 中,但语法在 Java 中基本相同,除了行尾的分号)。
如果您使用要编写日志的上下文(插件?自定义挂钩?)更新您的问题,那么也许我们可以帮助您获得更具体的问题答案。另外,请透露一些您的真实代码并告诉我们您卡在哪里。
推荐阅读
- node.js - 在 node.js 中过滤和格式化 XML
- c# - ASP.NET MVC - 为动态创建的 ViewModel 提供附加数据
- typescript - 将 V-Money 指令与 Typescript 一起使用
- c# - 如何使用 c# 从 Datagridview 更新 MySql 数据库
- python - pandas.to_datetime -> ValueError:未转换的数据仍然存在:01
- kubernetes - 无法在 labs.play-with-kubernetes 免费实例中复制或粘贴命令
- spotfire-analyst - 每周刷新数据库中的表,并从 Spotfire 回写
- java - Spring Boot (ENTITY) - 期望能够解析类型但为空!这通常源于实现原始 Map 或 Collection 接口的类型
- flutter - 当我对谷歌地图中的 API 密钥使用应用程序限制或 API 限制时,其他人可以运行我的 android 应用程序吗?
- javascript - 用户登录后在 laravel 7 中获取服务器错误 500