我有一个不同类型对象的数组,我使用BinaryWriter将每个项目转换为二进制等价物,以便我可以通过网络发送结构.
我现在做的事情就像
for ( i=0;i<tmpArrayList.Count;i++)
{
object x=tmpArrayList[i];
if (x.GetType() == typeof(byte))
{
wrt.Write((byte)x);
}
........
Run Code Online (Sandbox Code Playgroud)
问题是,如果错过了一个类型,我的代码将来可能会破坏.
我想做点什么.
object x=tmpArrayList[i];
wrt.Write(x);
Run Code Online (Sandbox Code Playgroud)
但除非我每次演员,否则它不起作用.
编辑:
在查阅答案之后,这就是我想出的功能.为了测试,该函数将数组发送到syslog.
private void TxMsg(ArrayList TxArray,IPAddress ipaddress)
{
Byte[] txbuf=new Byte[0];
int sz=0;
// caculate size of txbuf
foreach (Object o in TxArray)
{
if ( o is String )
{
sz+=((String)(o)).Length;
}
else if ( o is Byte[] )
{
sz+=((Byte[])(o)).Length;
}
else if ( o is Char[] )
{
sz+=((Char[])(o)).Length;
}
else // take care of …Run Code Online (Sandbox Code Playgroud) 如何在 ubuntu 上配置 syslog 日志文件的轮换?
在我的 /etc/syslog.conf 中,我有这一行:
local1.* /var/log/log.txt
随着时间的推移,出现了以下备份文件:
/var/log/log.txt.0.gz /var/log/log.txt.1.gz
如何配置这些文件的生成频率以及如何清除它们?
情景就是这样
我有一个shell脚本,它运行一些带有不同参数和选项的复杂命令.
这些参数和选项由第三方应用程序传递,这样我可能无法确切知道每次向shell脚本传递的参数和选项
所以为了知道这一点,我在shell脚本的开头使用set -x来查看命令运行的确切内容.我想使用logger将那些调试器消息从set -x移动到syslog.
我用陷阱来做
trap "logger $(BASH_COMMAND)" DEBUG
Run Code Online (Sandbox Code Playgroud)
但是,syslog的输出没有正在运行的确切命令,但是......就像那样......
apple=1
orange=2
command $apple $orange
Run Code Online (Sandbox Code Playgroud)
.............................
但我想要日志的输出应该是
command 1 2
Run Code Online (Sandbox Code Playgroud)
我怎么能实现?
我在ubuntu的syslog文件中有日志。我可以查看来自python的新消息,还是始终需要打开/关闭syslog文件?谢谢
当我尝试将一些消息写入远程Linux系统日志时,我使用log4j2和appender syslog以及format = RFC5424,而BSD.My配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<Syslog name="bsd" host="9.115.114.133" port="514" protocol="UDP" facility="local5"/>
<Syslog name="RFC5424" format="RFC5424" host="9.115.114.133"
protocol="UDP" appName="MyApp" includeMDC="true"
facility="LOCAL5" enterpriseNumber="18060" newLine="true"
messageId="Audit" id="App"/>
</Appenders>
<Loggers>
<Logger name="test.main" level="warn">
<AppenderRef ref="RFC5424"/>
</Logger>
<Root level="error">
<AppenderRef ref="bsd"/>
</Root>
</Loggers>
Run Code Online (Sandbox Code Playgroud)
当我运行一个测试程序,我总是得到错误如下:java.lang.IllegalArgumentException异常:由没有造成结构性ID名称在org.apache.logging.log4j.message.StructuredDataId供给(StructuredDataId.java:92).在org.apache.logging.log4j.core.layout.Rfc5424Layout.(Rfc5424Layout.java:139)在org.apache.logging.log4j.core.layout.Rfc5424Layout.createLayout(Rfc5424Layout.java:657)在org.apache. logging.log4j.core.appender.SyslogAppender.createAppender(SyslogAppender.java:133)... 20更多
2014-11-10 03:21:46,252错误Null对象为Appenders中的Syslog返回 2014-11-10 03:21:46,267错误无法找到记录器test.main的appender RFC5424
我怎么能摆脱这个错误?谢谢.
我正在设置日志的收集器。我的应用程序使用SyslogAppender(log4j)将日志发送到远程日志服务器。我还可以使用curl命令行保存所有应用程序日志和postgresql数据库日志。我的日志服务器是ELK服务器(都在同一群集中)。
但是现在我想自动发送postgresql日志,就像处理Appender和应用程序日志一样。是否可以使用postgresql.conf文件执行此操作?还是我必须使用logstash转发器?(如果可能,我希望避免使用转发器)
可以在docker容器中登录...说位于/ var/log/syslog中的日志是否运送到logstash而不使用任何其他组件,如伐木工人和logspout?
只是想知道,因为我设置了一个环境,并试图使它与syslog一起工作(所以syslog将日志从docker容器发送到logstash)但是现在它不起作用..只是想知道我的逻辑是否有问题.
如何仅将原始消息存储到文件中?
例如:
我通过rsyslog收到了一条消息:
May 4 13:18:47 xxxx apache-error: [Wed May 04 13:18:41.256596 2016] [:error] [pid 54583] [client 192.168.30.200:52638] script '/var/www/aaa.php' not found or unable to stat
Run Code Online (Sandbox Code Playgroud)
我需要一个rsyslog配置来从输入中提取原始消息,而没有syslog标题(以下突出显示):
5月4日13:18:47 xxxx apache-error:[Wed May 04 13:18:41.256596 2016] [:error] [pid 54583] [client 192.168.30.200:52638] script'/var/www/aaa.php'没找到或无法统计
[Wed May 04 13:18:41.256596 2016] [:error] [pid 54583] [client 192.168.30.200:52638] script '/var/www/aaa.php' not found or unable to stat
Run Code Online (Sandbox Code Playgroud)
TNX!
寻找有关NGINX的一些指导并将源IP地址传递给后端服务器.到目前为止,我已经找到了关于如何为http/s请求执行此操作的配置,而不是针对非HTTP/s端口的TCP/UDP负载平衡.
我有一个UDP代理设置并使用NGINX,但我的应用程序(syslog服务器)中的源IP显示为NGINX,而不是将syslog消息传递给它的设备.
下面是我的配置 - 到目前为止,我正在空手而归,如何从源服务器传递源IP.
stream {
server {
listen 514 udp;
proxy_pass syslog_standard;
}
upstream syslog_standard {
server syslog1.ars.com:10514 max_fails=1 fail_timeout=10s;
server syslog2.ars.com:10514 max_fails=1 fail_timeout=10s;
}
}
Run Code Online (Sandbox Code Playgroud)
任何输入将不胜感激!
我在看这里: https: //github.com/NixOS/nixos/blob/master/modules/services/logging/syslogd.nix
我尝试了一个简单的:
tail -f /var/log/syslog
Run Code Online (Sandbox Code Playgroud)
但这会产生:
tail:无法打开“/var/log/syslog”进行读取:没有这样的文件或目录