Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Groovy或Java将日志发送到Syslog服务器_Java_Logging_Groovy_Log4j_Syslog - Fatal编程技术网

使用Groovy或Java将日志发送到Syslog服务器

使用Groovy或Java将日志发送到Syslog服务器,java,logging,groovy,log4j,syslog,Java,Logging,Groovy,Log4j,Syslog,日志来自POSTGRESQL,我也在使用ScriptRunner来实现这一点。我一直在寻找将这些日志结束到syslog服务器的方法,因为我对这一点非常陌生,我不知道从哪里开始 假设这是服务器的名称:syslog12和端口:514 如果有人能教我如何将日志发送到syslog服务器,我将不胜感激 这是我的groovy代码: return getUserId() class Logs{ String id = "" St

日志来自POSTGRESQL,我也在使用ScriptRunner来实现这一点。我一直在寻找将这些日志结束到syslog服务器的方法,因为我对这一点非常陌生,我不知道从哪里开始

假设这是服务器的名称:syslog12和端口:514

如果有人能教我如何将日志发送到syslog服务器,我将不胜感激

这是我的groovy代码:

return getUserId()

class Logs{
                    String id = ""
                    String created = ""
                    String summary =""
                    String category =""
                    String searchField =""
     String toString(){
        "$id ==== $created-$summary,$category,$searchField"    
     }
}

def getUserId(){
        def driver = Class.forName('org.postgresql.Driver').newInstance() as Driver
        def props = new Properties()

        props.setProperty("user", "USERNAME")
        props.setProperty("password", "PASSWORD")
        props.setProperty("sslfactory", "org.postgresql.ssl.NonValidatingFactory")
        props.setProperty("ssl", "true")

        def conn = driver.connect("jdbc:postgresql://DATABASE:PORT/GRP", props)
        def sql = new Sql(conn)

        try {

                BufferedWriter outputFile = new BufferedWriter(new FileWriter("/GRP/atlassian/testProd1.txt", true))
                def logs = new Logs()
                String query = "SELECT * from audit_log where created >='2015-04-15' AND created < '2015-04-26' order by id ASC"

                PreparedStatement statement = conn.prepareStatement(query)

                ResultSet result = statement.executeQuery()

                while(result.next()){
                        String id1 = result.getString("id")
                        logs.id = id1

                        String created1 = result.getString("created")
                        logs.created = created1

                        String summary1 = result.getString("summary")
                        logs.summary = summary1

                        String category1 = result.getString("category")
                        logs.category = category1

                        String searchField1 = result.getString("search_field")
                        logs.searchField = searchField1

                        outputFile.write("[GRP2.0] "+logs.toString())
                        outputFile.newLine()
                }

                outputFile.close()
                return ("[GRP2.0] "+logs.toString())
        } finally {
            sql.close()
            conn.close()
        }

}
返回getUserId()
类日志{
字符串id=“”
String created=“”
String summary=“”
String category=“”
字符串searchField=“”
字符串toString(){
$id===$created-$summary,$category,$searchField
}
}
def getUserId(){
def driver=Class.forName('org.postgresql.driver')。newInstance()作为驱动程序
def props=新属性()
props.setProperty(“用户”、“用户名”)
props.setProperty(“密码”、“密码”)
props.setProperty(“sslfactory”、“org.postgresql.ssl.NonValidatingFactory”)
props.setProperty(“ssl”、“true”)
def conn=driver.connect(“jdbc:postgresql://DATABASE:PORT/GRP“,道具)
def sql=新sql(conn)
试一试{
BufferedWriter outputFile=new BufferedWriter(new FileWriter(“/GRP/atlassian/testProd1.txt”,true))
def日志=新日志()
String query=“从审计日志中选择*,其中创建了>='2015-04-15'并创建了<'2015-04-26'按id ASC的订单”
PreparedStatement=conn.prepareStatement(查询)
ResultSet result=statement.executeQuery()
while(result.next()){
字符串id1=result.getString(“id”)
logs.id=id1
String created1=result.getString(“已创建”)
logs.created=created1
String summary1=result.getString(“summary”)
logs.summary=summary1
String category1=result.getString(“类别”)
logs.category=类别1
String searchField1=result.getString(“搜索字段”)
logs.searchField=searchField1
outputFile.write(“[GRP2.0]”+logs.toString())
outputFile.newLine()
}
outputFile.close()
return(“[GRP2.0]”+logs.toString()
}最后{
sql.close()
康涅狄格州关闭
}
}
有一个非常方便的方法。既然可以,一个简单的例子非常简单:

示例.groovy

package com.jalopaba.syslog

import org.slf4j.Logger
import org.slf4j.LoggerFactory

class Example {
    private static final Logger LOG = LoggerFactory.getLogger(Example.class)

    static void main(args) {
        LOG.info('Test message: ' + new Date())
    }
}
appender('console', ConsoleAppender) {
    encoder(PatternLayoutEncoder) {
        pattern = "%d{HH:mm:ss.SSS} %-5level [%thread] - %msg%n"
    }
}

appender('syslog', SyslogAppender) {
    syslogHost = 'remote_host'
    facility = 'USER'
    suffixPattern = "%thread: %-5level %logger{36} - %msg%n"
}

logger('com.jalopaba', DEBUG, ['console', 'syslog'])
logback.groovy

package com.jalopaba.syslog

import org.slf4j.Logger
import org.slf4j.LoggerFactory

class Example {
    private static final Logger LOG = LoggerFactory.getLogger(Example.class)

    static void main(args) {
        LOG.info('Test message: ' + new Date())
    }
}
appender('console', ConsoleAppender) {
    encoder(PatternLayoutEncoder) {
        pattern = "%d{HH:mm:ss.SSS} %-5level [%thread] - %msg%n"
    }
}

appender('syslog', SyslogAppender) {
    syslogHost = 'remote_host'
    facility = 'USER'
    suffixPattern = "%thread: %-5level %logger{36} - %msg%n"
}

logger('com.jalopaba', DEBUG, ['console', 'syslog'])
以便:

remote_host:~$ tail -f /var/log/syslog
Nov 20 12:35:58 jalopaba_machine main: INFO  com.jalopaba.syslog.Example - Test message: Fri Nov 20 12:35:58 CET 2015#015
请记住,syslog/rsyslog通常默认情况下未启用远程日志记录:

具有非常方便的功能。既然可以,一个简单的例子非常简单:

示例.groovy

package com.jalopaba.syslog

import org.slf4j.Logger
import org.slf4j.LoggerFactory

class Example {
    private static final Logger LOG = LoggerFactory.getLogger(Example.class)

    static void main(args) {
        LOG.info('Test message: ' + new Date())
    }
}
appender('console', ConsoleAppender) {
    encoder(PatternLayoutEncoder) {
        pattern = "%d{HH:mm:ss.SSS} %-5level [%thread] - %msg%n"
    }
}

appender('syslog', SyslogAppender) {
    syslogHost = 'remote_host'
    facility = 'USER'
    suffixPattern = "%thread: %-5level %logger{36} - %msg%n"
}

logger('com.jalopaba', DEBUG, ['console', 'syslog'])
logback.groovy

package com.jalopaba.syslog

import org.slf4j.Logger
import org.slf4j.LoggerFactory

class Example {
    private static final Logger LOG = LoggerFactory.getLogger(Example.class)

    static void main(args) {
        LOG.info('Test message: ' + new Date())
    }
}
appender('console', ConsoleAppender) {
    encoder(PatternLayoutEncoder) {
        pattern = "%d{HH:mm:ss.SSS} %-5level [%thread] - %msg%n"
    }
}

appender('syslog', SyslogAppender) {
    syslogHost = 'remote_host'
    facility = 'USER'
    suffixPattern = "%thread: %-5level %logger{36} - %msg%n"
}

logger('com.jalopaba', DEBUG, ['console', 'syslog'])
以便:

remote_host:~$ tail -f /var/log/syslog
Nov 20 12:35:58 jalopaba_machine main: INFO  com.jalopaba.syslog.Example - Test message: Fri Nov 20 12:35:58 CET 2015#015

请记住,syslog/rsyslog通常默认情况下未启用远程日志记录:

Hi,我只是想知道端口放在哪里,它是UDP还是TCP?如果未指定,端口是syslog默认端口(514)。如果您想更改它,SyslogAppender有一个
port
属性(请查看文档)。好的,logback的syslog appender使用UDP。我对模式和后缀模式有点困惑,因为我正在学习如何在上面的代码上实现这一点由于syslog请求的格式遵循相当严格的规则,因此没有可与SyslogAppender一起使用的布局。但是,使用SUFFEXPATTERN选项可以让用户显示任何信息。“嗨,我只是想知道将端口放在哪里,以及它是UDP还是TCP?如果没有指定,端口是syslog默认值(514)。如果要更改它,SyslogAppender有一个
port
属性(查看文档).AFAIK,logback的syslog appender使用UDP。我对模式和后缀模式有点困惑,因为我正在学习如何在上面的代码中实现这一点“由于syslog请求的格式遵循相当严格的规则,因此SyslogAppender没有可使用的布局。但是,使用SUFFEXPATTERN选项可以让用户显示任何信息。”