@@ -13,6 +13,7 @@ pub struct SyslogWriterBuilder {
13
13
syslog_connection : SyslogConnection ,
14
14
syslog_line_header : SyslogLineHeader ,
15
15
syslog_facility : SyslogFacility ,
16
+ custom_process_name : Option < String > ,
16
17
determine_severity : LevelToSyslogSeverity ,
17
18
max_log_level : log:: LevelFilter ,
18
19
format : FormatFunction ,
@@ -28,12 +29,20 @@ impl SyslogWriterBuilder {
28
29
syslog_connection : syslog,
29
30
syslog_line_header,
30
31
syslog_facility,
32
+ custom_process_name : None ,
31
33
determine_severity : default_mapping,
32
34
max_log_level : log:: LevelFilter :: Warn ,
33
35
format : syslog_default_format,
34
36
}
35
37
}
36
38
39
+ /// Specify a custom process name, or unset it to revert back to name inference.
40
+ #[ must_use]
41
+ pub fn custom_process_name ( mut self , name : Option < & str > ) -> Self {
42
+ self . custom_process_name = name. map ( Into :: into) ;
43
+ self
44
+ }
45
+
37
46
/// Use the given function to map the rust log levels to the syslog severities.
38
47
/// By default a trivial mapping is used, which should be good enough in most cases.
39
48
#[ must_use]
@@ -73,12 +82,16 @@ impl SyslogWriterBuilder {
73
82
pub fn build ( self ) -> IoResult < Box < SyslogWriter > > {
74
83
Ok ( Box :: new ( SyslogWriter :: new (
75
84
std:: process:: id ( ) ,
76
- std:: env:: args ( ) . next ( ) . ok_or_else ( || {
77
- IoError :: new (
78
- ErrorKind :: Other ,
79
- "Can't infer app name as no env args are present" . to_owned ( ) ,
80
- )
81
- } ) ?,
85
+ self . custom_process_name
86
+ . or ( std:: env:: args ( ) . next ( ) )
87
+ . ok_or_else ( || {
88
+ IoError :: new (
89
+ ErrorKind :: Other ,
90
+ "Can't provide a process name as no env args are present and \
91
+ no custom process name is set"
92
+ . to_owned ( ) ,
93
+ )
94
+ } ) ?,
82
95
self . syslog_line_header ,
83
96
self . syslog_facility ,
84
97
self . determine_severity ,
0 commit comments