destination d_syslog { file("/data/syslog-ng/${ADDRMAC:-MAC}/${PROGRAM:-name}_${ADDRMAC:-mac}_${VERSION:-version}" create_dirs(yes)); };
时间: 2023-11-01 08:55:22 浏览: 60
这段代码同样是 syslog-ng 的配置语言,用于定义一个名为 d_syslog 的目标,将日志消息输出到指定的文件中。文件名由三个宏定义组成,分别为 ADDRMAC、PROGRAM 和 VERSION。如果这些宏未在消息中定义,则使用默认值。其中 create_dirs(yes) 表示如果文件目录不存在,则自动创建。
相关问题
source demo_tls_syslog_source { syslog(ip(0.0.0.0) port(1998) transport("tls") tls( key-file("/usr/local/syslog-ng/etc/ssl/syslogkey.pem") cert-file("/usr/local/syslog-ng/etc/ssl/syslogcert.pem") peer-verify(optional-untrusted)) ); }; parser p_test1 { csv-parser(columns("TEST1", "TEST2", "TEST3") delimiters(" ") flags(escape-none) template("${MSGHDR}${MSG}")); }; parser p_test2 { csv-parser(columns("ADDR0", "ADDRMAC", "ADDR1", "VERSION") delimiters("[]") flags(escape-none) template("${TEST1}${TEST2}")); }; parser p_test3 { csv-parser(columns("TIMEYEAR", "TIMEMOH", "TIMEDAY", "TIMESTAMP") delimiters(" ") flags(escape-none) template("${FULLDATE}")); }; filter p_test_filter { match("G*" value("PROGRAM") type("posix")); }; destination d_syslog { file("/data/syslog-ng/${ADDRMAC:-MAC}/${PROGRAM:-name}_${ADDRMAC:-mac}_${VERSION:-version}" create_dirs(yes)); }; destination d_ietfsyslog { file("/var/log/ietf"); }; destination d_mesg { file("/var/log/messages"); }; log { source(demo_tls_source); log { parser(p_test1); parser(p_test2); parser(p_test3); destination(d_syslog); }; };
这段代码是一个完整的 syslog-ng 配置文件,定义了一个名为 demo_tls_syslog_source 的来源,使用 TLS 协议接收来自 0.0.0.0:1998 的日志消息。同时定义了三个 parser,分别为 p_test1、p_test2 和 p_test3,用于解析日志消息的不同部分。还定义了一个名为 p_test_filter 的过滤器,用于筛选出 PROGRAM 属性以 G 开头的日志消息。最后定义了三个目标,分别为 d_syslog、d_ietfsyslog 和 d_mesg,用于将日志消息输出到不同的文件中。最后使用 log 块将来源 demo_tls_source 获取到的日志消息通过解析器和过滤器后输出到目标 d_syslog 中。
按照你说的做,为什么会报错如下:czj@czj-virtual-machine:~/build$ cmake .. -G Ninja CMake Warning (dev) in CMakeLists.txt: No project() command is present. The top-level CMakeLists.txt file must contain a literal, direct call to the project() command. Add a line of code such as project(ProjectName) near the top of the file, but after cmake_minimum_required(). CMake is pretending there is a "project(Project)" command on the first line. This warning is for project developers. Use -Wno-dev to suppress it. -- The C compiler identification is GNU 9.4.0 -- The CXX compiler identification is GNU 9.4.0 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring done -- Generating done -- Build files have been written to: /home/czj/build czj@czj-virtual-machine:~/build$ ninja ninja: no work to do. czj@czj-virtual-machine:~/build$ sudo ninja install [sudo] czj 的密码: ninja: error: unknown target 'install'
根据你提供的信息,可能是因为在使用 Ninja 构建系统时,没有配置 install 目标。你可以检查一下 CMakeLists.txt 文件中是否添加了 install 目标。如果没有,你可以添加以下代码:
```
install(TARGETS <target_name>
DESTINATION <destination_folder>)
```
其中,`<target_name>` 是要安装的目标名称,`<destination_folder>` 是安装目标的路径。例如:
```
install(TARGETS my_app
DESTINATION bin)
```
表示将 `my_app` 应用程序安装到 `/usr/local/bin` 目录下。
如果你已经添加了 install 目标,那么可能是因为你没有使用 sudo 权限运行 `ninja install` 命令。你可以使用以下命令来运行:
```
sudo ninja install
```
这样就可以使用管理员权限安装目标了。
阅读全文