mirror of
https://github.com/gabime/spdlog.git
synced 2024-11-15 08:25:43 +08:00
Winsock support
This commit is contained in:
parent
4501f21ae7
commit
486dc5102e
@ -5,6 +5,7 @@
|
||||
// spdlog usage example
|
||||
|
||||
#include <cstdio>
|
||||
#include <chrono>
|
||||
|
||||
void load_levels_example();
|
||||
void stdout_logger_example();
|
||||
@ -19,8 +20,8 @@ void multi_sink_example();
|
||||
void user_defined_example();
|
||||
void err_handler_example();
|
||||
void syslog_example();
|
||||
void custom_flags_example();
|
||||
void udp_example();
|
||||
void custom_flags_example();
|
||||
|
||||
#include "spdlog/spdlog.h"
|
||||
#include "spdlog/cfg/env.h" // support for loading levels from the environment variable
|
||||
@ -75,8 +76,8 @@ int main(int, char *[])
|
||||
err_handler_example();
|
||||
trace_example();
|
||||
stopwatch_example();
|
||||
custom_flags_example();
|
||||
udp_example();
|
||||
custom_flags_example();
|
||||
|
||||
// Flush all *registered* loggers using a worker thread every 3 seconds.
|
||||
// note: registered loggers *must* be thread safe for this to work correctly!
|
||||
@ -208,13 +209,19 @@ void stopwatch_example()
|
||||
spdlog::info("Stopwatch: {} seconds", sw);
|
||||
}
|
||||
|
||||
using namespace std::chrono_literals;
|
||||
void udp_example()
|
||||
{
|
||||
spdlog::sinks::udp_sink_config cfg("127.0.0.1", 11091);
|
||||
auto my_logger = spdlog::udp_logger_mt("udplog", cfg);
|
||||
my_logger->set_level(spdlog::level::debug);
|
||||
my_logger->info("hello world");
|
||||
my_logger->info("are you ok");
|
||||
for (int i = 0; i < 10; i++) {
|
||||
my_logger->info("hello world {}", i);
|
||||
#ifndef _WIN32
|
||||
// sendto() on winsock will drop packets if sent too quickly
|
||||
std::this_thread::sleep_for(40ms);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
// A logger with multiple sinks (stdout and file) - each with a different format and log level.
|
||||
|
@ -79,9 +79,10 @@ public:
|
||||
close();
|
||||
}
|
||||
|
||||
addr_.sin_family = AF_INET;
|
||||
addr_.sin_family = PF_INET;
|
||||
addr_.sin_port = htons(port);
|
||||
InetPton(AF_INET, TEXT(host.c_str()), &addr_.sin_addr.s_addr);
|
||||
addr_.sin_addr.s_addr = INADDR_ANY;
|
||||
InetPton(PF_INET, TEXT(host.c_str()), &addr_.sin_addr.s_addr);
|
||||
|
||||
socket_ = socket(PF_INET, SOCK_DGRAM, 0);
|
||||
if (socket_ == INVALID_SOCKET)
|
||||
@ -113,7 +114,8 @@ public:
|
||||
|
||||
void send(const char *data, size_t n_bytes)
|
||||
{
|
||||
if ((sendto(socket_, data, static_cast<int>(n_bytes), 0, (struct sockaddr *)&addr_, sizeof(struct sockaddr))) == -1)
|
||||
socklen_t tolen = sizeof(struct sockaddr);
|
||||
if (sendto(socket_, data, static_cast<int>(n_bytes), 0, (struct sockaddr *)&addr_, tolen) == -1)
|
||||
{
|
||||
throw_spdlog_ex("sendto(2) failed", errno);
|
||||
close();
|
||||
|
Loading…
Reference in New Issue
Block a user