问题描述
近日笔者在用mininet搭建本地网络拓扑时,想通过控制器直接读取DHCP服务器日志来获取最近分配过的ip,于是简单找了找,在服务器配置文件中新增了以下配置:
"loggers": [{
"name": "v4",
"output_options": [ {
"output": "/var/log/kea/v4.log",
} ],
"severity": "DEBUG",
"debuglevel": 0
}]
因为笔者用的是自定义的配置文件,文件名是v4
所以为了方便,这个logger
配置的name
也直接写成v4
了。重新启动服务后,发现服务器日志还是直接打印在屏幕上,目标日志文件创建出来了但是为空,问GPT无法解决,遂直接去官方文档寻找答案。
官方文档说明
官方文档中说明,日志文件由一个个的记录器(logger
)写入的,而不同的组件(component
)会有不同的记录器。比如:DHCPv4服务器使用一个记录器记录有关数据包接收和传输的消息,另一个记录器记录与租约分配相关的消息,等等。Kea服务器使用的一些库(如libdhcpsrv)使用它们自己的日志记录器。
问题就出在这里,记录器的名字(name
)实际非常重要,特定组件用特定名字,如果自定义的话,也是自定义的组件。所以前面笔者自定义的名字出了问题。
然后笔者按照官网文档给出的参考,将记录器名字改为kea-dhcp4
后,重启服务器发现问题成功解决,日志成功进入制定路径文件。
附上笔者配置文件
{
"Dhcp4": {
"valid-lifetime": 4000,
"renew-timer": 1000,
"rebind-timer": 2000,
"interfaces-config": {
"interfaces": ["serverHost-eth0"]
},
"lease-database": {
"type": "memfile",
"persist": true,
"name": "/var/lib/kea/dhcp4.leases"
},
"option-data": [{
"name": "domain-name-servers",
"data": "10.0.0.10",
"always-send": true
},
{
"name": "routers",
"data": "10.0.0.9",
"always-send": true
}
],
"subnet4": [{
"subnet": "10.0.0.0/24",
"pools": [{
"pool": "10.0.0.15 - 10.0.0.45"
}]
}],
"loggers": [{
"name": "kea-dhcp4",
"output_options": [ {
"output": "/var/log/kea/kea-dhcp4.log"
} ],
"severity": "DEBUG",
"debuglevel": 0
}]
}
}
参考
kea官方文档中logger相关内容:https://kea.readthedocs.io/en/kea-2.0.1/arm/logging.html