Experimental Physics and Industrial Control System
Subject: |
[Merge] ~epics-core/epics-base/+git/Com:errlog2syslog into epics-base:7.0 |
From: |
mdavidsaver via Core-talk <[email protected]> |
To: |
[email protected] |
Date: |
Tue, 24 Sep 2019 01:28:24 -0000 |
mdavidsaver has proposed merging ~epics-core/epics-base/+git/Com:errlog2syslog into epics-base:7.0.
Requested reviews:
EPICS Core Developers (epics-core)
For more details, see:
https://code.launchpad.net/~epics-core/epics-base/+git/Com/+merge/373098
Bridge from IOC errlog to syslog
If supported (!WIN32 && !vxWorks), and if $EPICS_IOC_LOG_IDENT is set,
then errlog messages will be passed to syslog().
The value of $EPICS_IOC_LOG_IDENT is used as the syslog identifier.
The idea being that an admin/init system will define EPICS_IOC_LOG_IDENT
appropriately if desired, so there is no need for boilerplate in every st.cmd.
By default this is only enabled for IOCs by calling errlogToSyslog()
from iocBuild(). (in case an IOC indirectly execs eg. caget)
--
Your team EPICS Core Developers is requested to review the proposed merge of ~epics-core/epics-base/+git/Com:errlog2syslog into epics-base:7.0.
diff --git a/configure/CONFIG_ENV b/configure/CONFIG_ENV
index 59e72d8..c325fe6 100644
--- a/configure/CONFIG_ENV
+++ b/configure/CONFIG_ENV
@@ -54,6 +54,10 @@ EPICS_IOC_IGNORE_SERVERS=""
# EPICS_IOC_LOG_PORT Log server port number etc.
EPICS_IOC_LOG_PORT=7004
+# Log Client:
+# If set, log to local syslog() with this identifier
+EPICS_IOC_LOG_IDENT=
+
# Other services:
EPICS_CMD_PROTO_PORT=
diff --git a/modules/database/src/ioc/misc/iocInit.c b/modules/database/src/ioc/misc/iocInit.c
index 05bf788..44bb56c 100644
--- a/modules/database/src/ioc/misc/iocInit.c
+++ b/modules/database/src/ioc/misc/iocInit.c
@@ -194,6 +194,8 @@ int iocBuild(void)
{
int status;
+ errlogToSyslog();
+
status = iocBuild_1();
if (status) return status;
diff --git a/modules/libcom/src/env/envDefs.h b/modules/libcom/src/env/envDefs.h
index 8be00a9..41e3d85 100644
--- a/modules/libcom/src/env/envDefs.h
+++ b/modules/libcom/src/env/envDefs.h
@@ -71,6 +71,7 @@ epicsShareExtern const ENV_PARAM EPICS_IOC_LOG_INET;
epicsShareExtern const ENV_PARAM EPICS_IOC_LOG_FILE_LIMIT;
epicsShareExtern const ENV_PARAM EPICS_IOC_LOG_FILE_NAME;
epicsShareExtern const ENV_PARAM EPICS_IOC_LOG_FILE_COMMAND;
+epicsShareExtern const ENV_PARAM EPICS_IOC_LOG_IDENT;
epicsShareExtern const ENV_PARAM EPICS_CMD_PROTO_PORT;
epicsShareExtern const ENV_PARAM EPICS_AR_PORT;
epicsShareExtern const ENV_PARAM IOCSH_PS1;
diff --git a/modules/libcom/src/error/errlog.h b/modules/libcom/src/error/errlog.h
index e8a4fb5..33385d6 100644
--- a/modules/libcom/src/error/errlog.h
+++ b/modules/libcom/src/error/errlog.h
@@ -84,6 +84,14 @@ epicsShareFunc int errlogVprintfNoConsole(const char *pformat,va_list pvar);
epicsShareFunc void errSymLookup(long status, char *pBuf, size_t bufLength);
+/** @brief (maybe) send errlog message to syslog.
+ *
+ * If supported (!WIN32 && !vxWorks), and if $EPICS_IOC_LOG_IDENT is set,
+ * then errlog messages will be passed to syslog().
+ * The value of $EPICS_IOC_LOG_IDENT is used as the syslog identifier.
+ */
+epicsShareFunc void errlogToSyslog(void);
+
#ifdef __cplusplus
}
#endif
diff --git a/modules/libcom/src/log/Makefile b/modules/libcom/src/log/Makefile
index 7d7a6b6..092a2fc 100644
--- a/modules/libcom/src/log/Makefile
+++ b/modules/libcom/src/log/Makefile
@@ -12,6 +12,7 @@ INC += iocLog.h
INC += logClient.h
Com_SRCS += iocLog.c
Com_SRCS += logClient.c
+Com_SRCS += syslogSink.c
PROD_HOST += iocLogServer
diff --git a/modules/libcom/src/log/syslogSink.c b/modules/libcom/src/log/syslogSink.c
new file mode 100644
index 0000000..b80c8dd
--- /dev/null
+++ b/modules/libcom/src/log/syslogSink.c
@@ -0,0 +1,43 @@
+/*************************************************************************\
+* Copyright (c) 2019 Michael Davidsaver
+* EPICS BASE Versions 3.13.7
+* and higher are distributed subject to a Software License Agreement found
+* in file LICENSE that is included with this distribution.
+\*************************************************************************/
+
+#if !defined(_WIN32) && !defined(vxWorks)
+
+#include <syslog.h>
+
+#define epicsExportSharedSymbols
+#include <errlog.h>
+#include <envDefs.h>
+
+static
+void err2sys(void *unused, const char *message)
+{
+ (void)unused;
+ syslog(LOG_INFO, "%s", message);
+}
+
+void errlogToSyslog(void)
+{
+ const char *ident = envGetConfigParamPtr(&EPICS_IOC_LOG_IDENT);
+
+ if(!ident || !ident[0])
+ return;
+
+ openlog(ident, 0, LOG_USER);
+
+ errlogAddListener(err2sys, 0);
+ syslog(LOG_DEBUG, "Syslog connected");
+}
+
+#else /* !_WIN32 && !vxWorks */
+
+#define epicsExportSharedSymbols
+#include <errlog.h>
+
+void errlogToSyslog(void) {}
+
+#endif /* _WIN32 && !vxWorks */
- Replies:
- Re: [Merge] ~epics-core/epics-base/+git/Com:errlog2syslog into epics-base:7.0 mdavidsaver via Core-talk
- Re: [Merge] ~epics-core/epics-base/+git/Com:errlog2syslog into epics-base:7.0 Andrew Johnson via Core-talk
- Re: [Merge] ~epics-core/epics-base/+git/Com:errlog2syslog into epics-base:7.0 mdavidsaver via Core-talk
- Re: [Merge] ~epics-core/epics-base/+git/Com:errlog2syslog into epics-base:7.0 Andrew Johnson via Core-talk
- Re: [Merge] ~epics-core/epics-base/+git/Com:errlog2syslog into epics-base:7.0 mdavidsaver via Core-talk
- Re: [Merge] ~epics-core/epics-base/+git/Com:errlog2syslog into epics-base:7.0 Martin Konrad via Core-talk
- Re: [Merge] ~epics-core/epics-base/+git/Com:errlog2syslog into epics-base:7.0 Andrew Johnson via Core-talk
- Navigate by Date:
- Prev:
Re: [Merge] ~dirk.zimoch/epics-base:iocLogClientFixesTry2 into epics-base:7.0 mdavidsaver via Core-talk
- Next:
Re: [Merge] ~epics-core/epics-base/+git/Com:errlog2syslog into epics-base:7.0 mdavidsaver via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
<2019>
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
RE: EPICS 7 build failures on Appveyor/Windows Freddie Akeroyd - UKRI STFC via Core-talk
- Next:
Re: [Merge] ~epics-core/epics-base/+git/Com:errlog2syslog into epics-base:7.0 mdavidsaver via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
<2019>
2020
2021
2022
2023
2024