github.com/mattyw/juju@v0.0.0-20140610034352-732aecd63861/utils/syslog/testing/syslogconf.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package testing 5 6 import ( 7 "bytes" 8 "text/template" 9 10 gc "launchpad.net/gocheck" 11 ) 12 13 var expectedAccumulateSyslogConfTemplate = ` 14 $ModLoad imuxsock 15 $ModLoad imfile 16 17 # Messages received from remote rsyslog machines have messages prefixed with a space, 18 # so add one in for local messages too if needed. 19 $template JujuLogFormat{{.Namespace}},"%syslogtag:{{.Offset}}:$%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n" 20 21 $template LongTagForwardFormat,"<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%" 22 23 $RuleSet local 24 25 # start: Forwarding rule for foo 26 $ActionQueueType LinkedList 27 $ActionQueueFileName {{.MachineTag}}{{.Namespace}}_0 28 $ActionResumeRetryCount -1 29 $ActionQueueSaveOnShutdown on 30 $DefaultNetstreamDriver gtls 31 $DefaultNetstreamDriverCAFile /var/log/juju{{.Namespace}}/ca-cert.pem 32 $ActionSendStreamDriverAuthMode anon 33 $ActionSendStreamDriverMode 1 # run driver in TLS-only mode 34 35 :syslogtag, startswith, "juju{{.Namespace}}-" @@foo:{{.Port}};LongTagForwardFormat 36 # end: Forwarding rule for foo 37 38 & ~ 39 $FileCreateMode 0640 40 41 $RuleSet remote 42 $FileCreateMode 0644 43 :syslogtag, startswith, "juju{{.Namespace}}-" /var/log/juju{{.Namespace}}/all-machines.log;JujuLogFormat{{.Namespace}} 44 & ~ 45 $FileCreateMode 0640 46 47 $InputFilePersistStateInterval 50 48 $InputFilePollInterval 5 49 $InputFileName /var/log/juju{{.Namespace}}/{{.MachineTag}}.log 50 $InputFileTag juju{{.Namespace}}-{{.MachineTag}}: 51 $InputFileStateFile {{.MachineTag}}{{.Namespace}} 52 $InputRunFileMonitor 53 $DefaultRuleset local 54 55 $ModLoad imtcp 56 $DefaultNetstreamDriver gtls 57 $DefaultNetstreamDriverCAFile /var/log/juju{{.Namespace}}/ca-cert.pem 58 $DefaultNetstreamDriverCertFile /var/log/juju{{.Namespace}}/rsyslog-cert.pem 59 $DefaultNetstreamDriverKeyFile /var/log/juju{{.Namespace}}/rsyslog-key.pem 60 $InputTCPServerStreamDriverAuthMode anon 61 $InputTCPServerStreamDriverMode 1 # run driver in TLS-only mode 62 63 $InputTCPServerBindRuleset remote 64 $InputTCPServerRun {{.Port}} 65 ` 66 67 type templateArgs struct { 68 MachineTag string 69 LogDir string 70 Namespace string 71 BootstrapIP string 72 Port int 73 Offset int 74 } 75 76 // ExpectedAccumulateSyslogConf returns the expected content for a rsyslog file on a state server. 77 func ExpectedAccumulateSyslogConf(c *gc.C, machineTag, namespace string, port int) string { 78 if namespace != "" { 79 namespace = "-" + namespace 80 } 81 t := template.Must(template.New("").Parse(expectedAccumulateSyslogConfTemplate)) 82 var conf bytes.Buffer 83 err := t.Execute(&conf, templateArgs{ 84 MachineTag: machineTag, 85 Namespace: namespace, 86 Offset: len("juju-") + len(namespace) + 1, 87 Port: port, 88 }) 89 c.Assert(err, gc.IsNil) 90 return conf.String() 91 } 92 93 var expectedForwardSyslogConfTemplate = ` 94 $ModLoad imuxsock 95 $ModLoad imfile 96 97 $InputFilePersistStateInterval 50 98 $InputFilePollInterval 5 99 $InputFileName {{.LogDir}}/{{.MachineTag}}.log 100 $InputFileTag juju{{.Namespace}}-{{.MachineTag}}: 101 $InputFileStateFile {{.MachineTag}}{{.Namespace}} 102 $InputRunFileMonitor 103 104 # start: Forwarding rule for server 105 $ActionQueueType LinkedList 106 $ActionQueueFileName {{.MachineTag}}{{.Namespace}}_0 107 $ActionResumeRetryCount -1 108 $ActionQueueSaveOnShutdown on 109 $DefaultNetstreamDriver gtls 110 $DefaultNetstreamDriverCAFile {{.LogDir}}/ca-cert.pem 111 $ActionSendStreamDriverAuthMode anon 112 $ActionSendStreamDriverMode 1 # run driver in TLS-only mode 113 114 $template LongTagForwardFormat,"<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%" 115 :syslogtag, startswith, "juju{{.Namespace}}-" @@{{.BootstrapIP}}:{{.Port}};LongTagForwardFormat 116 # end: Forwarding rule for server 117 118 & ~ 119 ` 120 121 // ExpectedForwardSyslogConf returns the expected content for a rsyslog file on a host machine. 122 func ExpectedForwardSyslogConf(c *gc.C, machineTag, logDir, namespace, bootstrapIP string, port int) string { 123 if namespace != "" { 124 namespace = "-" + namespace 125 } 126 t := template.Must(template.New("").Parse(expectedForwardSyslogConfTemplate)) 127 var conf bytes.Buffer 128 err := t.Execute(&conf, templateArgs{ 129 MachineTag: machineTag, 130 LogDir: logDir, 131 Namespace: namespace, 132 BootstrapIP: bootstrapIP, 133 Port: port, 134 }) 135 c.Assert(err, gc.IsNil) 136 return conf.String() 137 }