日志
Harbor的ui与jobservice两个项目的代码中,当需要打出日志时,调用log包里的如下五个函数:
log.Infof(string, ...interface{})
log.Debugf(string, ...interface{})
log.Warningf(string, ...interface{})
log.Errorf(string, ...interface{})
log.Fatalf(string, ...interface{})
这五个函数实际上是把日志以特定的格式输出到容器的stdout中,格式如下:
Oct 20 16:48:06 172.17.0.1 ui[123738]: 2018-10-20T08:48:06Z [DEBUG] [utils.go:307]: Sync repositories from registry to DB is done.
当日志输出到容器的stdout中时,日志还会被发送给到一个syslog网络服务器。通过docker-compose.yml
的文件中logging
选项可以知道,该syslog网络服务器就是harbor-log
容器:
version: '2'
services:
log:
image: vmware/harbor-log:0.5.0
container_name: harbor-log
restart: always
volumes:
- /var/log/harbor/:/var/log/docker/
ports:
- 1514:514
...
ui:
...
logging:
driver: "syslog"
options:
syslog-address: "tcp://127.0.0.1:1514"
tag: "ui"
...
当日志被harbor-log
接收后,它会根据作进一步的处理:(1)根据tag
把日志放到不同的文件中,(2)每天产生一个目录
我们查看harbor-log
的/var/log/docker
目录的内容如下,harbor会保存七天的日志:
.
└── 2018-10-20
├── anacron.log
├── CROND.log
├── jobservice.log
├── mysql.log
├── registry.log
├── run-parts.log
└── ui.log
最后,在docker-compose.yml
文件中将日志挂载到宿主机的/var/log/harbor
目录下,我们就可以在宿主机上看到harbor的日志了。
Last updated
Was this helpful?