Comments (2)
When using 0.0.0.0:0
or :::0
as the local socket address, UDP syslogs seem to be sent successfully.
Initially I stumbled upon this SO post, it seemed like Ipv4Addr::UNSPECIFIED
with the automatic port 0
would help:
It's not obvious, but if you bind the socket to (UNSPECIFIED, 0), then when you connect to a remote address the local address is set to the appropriate interface address. (Port 0 means to auto-allocate a port, just like an unbound socket in C.)
Turns out that 0.0.0.0
is equivalent to UNSPECIFIED
in std::net::ToSocketAddrs
An IPv4 address representing an unspecified address: 0.0.0.0
So I tried connecting to a localhost and LAN UDP syslog server with that format, it worked both times:
let syslog_udp_config = fern::Dispatch::new().chain(formatter, "0.0.0.0:0", "127.0.0.1:514").expect("Unable to initialize syslog"));
(...)
let syslog_udp_config = fern::Dispatch::new().chain(formatter, "0.0.0.0:0", "192.168.1.234:514").expect("Unable to initialize syslog"));
It also worked with the IPv6 equivalent, :::0
which is probably an even better choice for future compatibility.
from rust-syslog.
after more testing, I arrived at:
let mut logger = syslog::udp(formatter, "127.0.0.1:1234", "10.0.0.10:514").expect("failed to initialize syslog");
logger.alert("zpe-fixer logging initializing").expect("failed to send syslog message");
However this panics with:
thread 'main' panicked at 'failed to send syslog message: Error(Format, State { next_error: Some(Os { code: 22, kind: InvalidInput, message: "Invalid argument" }), backtrace: InternalBacktrace })', src/main.rs:48:56
from rust-syslog.
Related Issues (20)
- Formatter*::pid takes i32, but std::process::id returns u32 HOT 1
- `time` crate dependency has vulnerability `RUSTSEC-2020-0071`
- How to set the log to respect log-specification? HOT 1
- EPROTOTYPE is not constant between platforms HOT 1
- Formatter5424 is not compliant with the RFC HOT 1
- Where is version 6.0.0? HOT 2
- Make formatter5424 deterministic for strutured data serialization HOT 1
- issues on sending logs to tcp HOT 3
- Make errors Send + Sync HOT 1
- Missing changelog
- Please consider make crate description more informative HOT 2
- Making `err()`, `notice()` &c take a `&mut self` (on Logger) is inconvenient
- stream logs never get flushed HOT 4
- Make possible to customize filtering of messages according to crates
- can you help me get this to work on ESP32?
- Invalid timestamp format for RFC 5424 HOT 1
- RFC5424 specifies MSGID as a string (not a number)
- Is there a way to use this crate from log4rs?
- syslog is not prepared to deal with ENOBUFS HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rust-syslog.