Syslog-ng无法在本地读写

时间:2016-10-04 23:11:35

标签: syslog-ng

这是我在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网站上的指南中,我需要能够在本地编写文件,以便我可以调试其他问题。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

试试这个:

首先使用所有(读/写/执行)权限创建空的test1.log文件,因为在启动syslog-ng服务器时,它首先检查源文件以获取日志。

之后如果在文件中附加文本,syslog-ng会将其视为日志..