这是我在StackOverflow上的第一个问题,如果我不小心违反了一些规则,请原谅。
我尝试做的是让一个程序写入一个简单的日志,并让syslog-ng读取该日志,然后将其写入另一个文件。
此输入日志文件是包含随机数的文件。
以下是我的syslog-ng.conf文件的内容。
source s_file
{
file("/home/vagrant/test1.log" follow-freq(1) flags(no_parse));
};
destination d_file
{
file("/home/vagrant/poc.db");
};
log
{
source(s_file);
destination(d_file);
}下面是生成随机数的程序的源代码。
import java.util.*;
import java.io.*;
public class loggerSpam{
PrintWriter out;
public loggerSpam() {
try {
out = new PrintWriter(new FileWriter("test1.log"));
} catch (Exception e) {
System.out.println("Caught");
}finally {
System.out.println("Constructor");
}
}
public void spam() {
Random rand = new Random();
try {
for (int i = 0; i < 10; i++) {
int num = rand.nextInt(10);
String msg = Integer.toString(num) + "\n";
System.out.print(msg);
out.write(msg);
}
out.close();
} catch (Exception e) {
System.out.println(e.toString());
}
}
public static void main(String args[]){
//Create spammer object
loggerSpam testObj = new loggerSpam();
//spam test.log
testObj.spam();
}
}我的理解是,如果我将配置文件放在/etc/ syslog-ng /中,然后重新启动syslog-ng服务,我所需要做的就是运行我的程序,并且syslog-ng应该能够检测到生成了一个日志文件。日志文件生成后,syslog将读取日志并将其写入我的目标文件poc.db。
然而,我的问题是syslog-ng没有读取test1.log,也没有生成poc.db。有人能解释一下为什么会这样吗?我能改变什么?根据syslog-ng网站上的指南,我需要能够在本地写入文件,这样我才能调试其他问题。
谢谢你的帮助!
发布于 2016-11-21 17:14:41
试试这个:
首先,创建具有所有(读/写/执行)权限的空test1.log文件,因为在启动syslog-ng服务器时,它首先检查源文件以获取日志。
之后,如果您将文本附加到文件中,syslog-ng会将其视为日志。
https://stackoverflow.com/questions/39863125
复制相似问题