You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用logger命令记录自定义日志并隐藏执行用户名?

搞定 logger 自动加用户名的问题

我太懂这种无奈了——logger 默认硬要把执行命令的用户名塞进日志里,想自己填内容根本没辙,查手册找不到方法、试了JS也没搞定?别急,这儿有几个靠谱的解决方案:

1. 用 logger 自带标签参数直接替换用户名

其实logger藏了个好用的参数 -t(全称--tag),专门用来自定义日志的前缀标识,用它指定的内容会直接替代默认的用户名。比如你想把标识改成 my-app-admin,直接这么写:

logger -t "my-app-admin" "用户发起了数据导出请求"

生成的日志就会以你指定的标签开头,再也看不到默认的用户名了。

2. 绕开 logger,直接构造日志写入文件

如果logger的参数还是满足不了你的自定义需求,那干脆直接手动构造符合系统日志格式的内容,写入日志文件(比如常见的 /var/log/syslog,不同Linux发行版路径可能略有不同)。用date生成标准时间戳,再拼接你想要的所有内容:

echo "$(date +'%b %d %H:%M:%S') my-server my-custom-user: 数据库备份完成" >> /var/log/syslog

⚠️ 注意:这种方式需要你有日志文件的写入权限,必要时得加sudo。

3. 用管道过滤替换已生成的用户名(适合小改现有脚本)

如果已经有现成的脚本在调用logger,不想大动干戈的话,可以用sed把输出里的默认用户名替换成你要的内容。比如默认日志格式是 Mar 10 14:22:15 your-username: 日志内容,可以这么处理:

logger "用户登录失败" | sed "s/your-username/my-custom-account/g"

不过这个更适合事后处理日志内容,不如前两种从源头解决来得彻底。

对了,你提到用JavaScript尝试没成功——如果是在Node.js环境里操作的话,要么用child_process调用上面的bash命令,要么直接用winston这类专业日志库,它能直接生成自定义格式的日志并写入系统日志,完全避开logger的默认行为,比自己折腾JS调用命令靠谱多了。


内容的提问来源于stack exchange,提问作者Georgios Leventis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:41:57