Mercurial > hg > nginx-quic
comparison src/core/ngx_syslog.c @ 9056:29adacffdefa
Syslog: removed usage of ngx_cycle->log and ngx_cycle->hostname.
During initial startup the ngx_cycle->hostname is not available, and
previously this resulted in incorrect logging. Instead, hostname from the
configuration being parsed is now preserved in the syslog peer structure
and then used during logging.
Similarly, ngx_cycle->log might not match the configuration where the
syslog peer is defined if the configuration is not yet fully applied,
and previously this resulted in unexpected logging of syslog errors
and debug information. Instead, cf->cycle->new_log is now referenced
in the syslog peer structure and used for logging, similarly to how it
is done in other modules.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Fri, 10 Mar 2023 07:43:40 +0300 |
parents | 7f9935f07fe9 |
children | 8771d35d55d0 |
comparison
equal
deleted
inserted
replaced
9055:9db24374123b | 9056:29adacffdefa |
---|---|
63 } | 63 } |
64 | 64 |
65 if (peer->tag.data == NULL) { | 65 if (peer->tag.data == NULL) { |
66 ngx_str_set(&peer->tag, "nginx"); | 66 ngx_str_set(&peer->tag, "nginx"); |
67 } | 67 } |
68 | |
69 peer->hostname = &cf->cycle->hostname; | |
70 peer->log = &cf->cycle->new_log; | |
68 | 71 |
69 peer->conn.fd = (ngx_socket_t) -1; | 72 peer->conn.fd = (ngx_socket_t) -1; |
70 | 73 |
71 peer->conn.read = &ngx_syslog_dummy_event; | 74 peer->conn.read = &ngx_syslog_dummy_event; |
72 peer->conn.write = &ngx_syslog_dummy_event; | 75 peer->conn.write = &ngx_syslog_dummy_event; |
241 return ngx_sprintf(buf, "<%ui>%V %V: ", pri, &ngx_cached_syslog_time, | 244 return ngx_sprintf(buf, "<%ui>%V %V: ", pri, &ngx_cached_syslog_time, |
242 &peer->tag); | 245 &peer->tag); |
243 } | 246 } |
244 | 247 |
245 return ngx_sprintf(buf, "<%ui>%V %V %V: ", pri, &ngx_cached_syslog_time, | 248 return ngx_sprintf(buf, "<%ui>%V %V %V: ", pri, &ngx_cached_syslog_time, |
246 &ngx_cycle->hostname, &peer->tag); | 249 peer->hostname, &peer->tag); |
247 } | 250 } |
248 | 251 |
249 | 252 |
250 void | 253 void |
251 ngx_syslog_writer(ngx_log_t *log, ngx_uint_t level, u_char *buf, | 254 ngx_syslog_writer(ngx_log_t *log, ngx_uint_t level, u_char *buf, |
290 if (ngx_syslog_init_peer(peer) != NGX_OK) { | 293 if (ngx_syslog_init_peer(peer) != NGX_OK) { |
291 return NGX_ERROR; | 294 return NGX_ERROR; |
292 } | 295 } |
293 } | 296 } |
294 | 297 |
295 /* log syslog socket events with valid log */ | |
296 peer->conn.log = ngx_cycle->log; | |
297 | |
298 if (ngx_send) { | 298 if (ngx_send) { |
299 n = ngx_send(&peer->conn, buf, len); | 299 n = ngx_send(&peer->conn, buf, len); |
300 | 300 |
301 } else { | 301 } else { |
302 /* event module has not yet set ngx_io */ | 302 /* event module has not yet set ngx_io */ |
304 } | 304 } |
305 | 305 |
306 if (n == NGX_ERROR) { | 306 if (n == NGX_ERROR) { |
307 | 307 |
308 if (ngx_close_socket(peer->conn.fd) == -1) { | 308 if (ngx_close_socket(peer->conn.fd) == -1) { |
309 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, ngx_socket_errno, | 309 ngx_log_error(NGX_LOG_ALERT, peer->log, ngx_socket_errno, |
310 ngx_close_socket_n " failed"); | 310 ngx_close_socket_n " failed"); |
311 } | 311 } |
312 | 312 |
313 peer->conn.fd = (ngx_socket_t) -1; | 313 peer->conn.fd = (ngx_socket_t) -1; |
314 } | 314 } |
322 { | 322 { |
323 ngx_socket_t fd; | 323 ngx_socket_t fd; |
324 | 324 |
325 fd = ngx_socket(peer->server.sockaddr->sa_family, SOCK_DGRAM, 0); | 325 fd = ngx_socket(peer->server.sockaddr->sa_family, SOCK_DGRAM, 0); |
326 if (fd == (ngx_socket_t) -1) { | 326 if (fd == (ngx_socket_t) -1) { |
327 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, ngx_socket_errno, | 327 ngx_log_error(NGX_LOG_ALERT, peer->log, ngx_socket_errno, |
328 ngx_socket_n " failed"); | 328 ngx_socket_n " failed"); |
329 return NGX_ERROR; | 329 return NGX_ERROR; |
330 } | 330 } |
331 | 331 |
332 if (ngx_nonblocking(fd) == -1) { | 332 if (ngx_nonblocking(fd) == -1) { |
333 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, ngx_socket_errno, | 333 ngx_log_error(NGX_LOG_ALERT, peer->log, ngx_socket_errno, |
334 ngx_nonblocking_n " failed"); | 334 ngx_nonblocking_n " failed"); |
335 goto failed; | 335 goto failed; |
336 } | 336 } |
337 | 337 |
338 if (connect(fd, peer->server.sockaddr, peer->server.socklen) == -1) { | 338 if (connect(fd, peer->server.sockaddr, peer->server.socklen) == -1) { |
339 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, ngx_socket_errno, | 339 ngx_log_error(NGX_LOG_ALERT, peer->log, ngx_socket_errno, |
340 "connect() failed"); | 340 "connect() failed"); |
341 goto failed; | 341 goto failed; |
342 } | 342 } |
343 | 343 |
344 peer->conn.fd = fd; | 344 peer->conn.fd = fd; |
345 peer->conn.log = peer->log; | |
345 | 346 |
346 /* UDP sockets are always ready to write */ | 347 /* UDP sockets are always ready to write */ |
347 peer->conn.write->ready = 1; | 348 peer->conn.write->ready = 1; |
348 | 349 |
349 return NGX_OK; | 350 return NGX_OK; |
350 | 351 |
351 failed: | 352 failed: |
352 | 353 |
353 if (ngx_close_socket(fd) == -1) { | 354 if (ngx_close_socket(fd) == -1) { |
354 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, ngx_socket_errno, | 355 ngx_log_error(NGX_LOG_ALERT, peer->log, ngx_socket_errno, |
355 ngx_close_socket_n " failed"); | 356 ngx_close_socket_n " failed"); |
356 } | 357 } |
357 | 358 |
358 return NGX_ERROR; | 359 return NGX_ERROR; |
359 } | 360 } |
370 if (peer->conn.fd == (ngx_socket_t) -1) { | 371 if (peer->conn.fd == (ngx_socket_t) -1) { |
371 return; | 372 return; |
372 } | 373 } |
373 | 374 |
374 if (ngx_close_socket(peer->conn.fd) == -1) { | 375 if (ngx_close_socket(peer->conn.fd) == -1) { |
375 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, ngx_socket_errno, | 376 ngx_log_error(NGX_LOG_ALERT, peer->log, ngx_socket_errno, |
376 ngx_close_socket_n " failed"); | 377 ngx_close_socket_n " failed"); |
377 } | 378 } |
378 } | 379 } |