log-foundry 0.10.2.dev56__tar.gz → 0.10.2.dev57__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/PKG-INFO +15 -1
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/README.md +14 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/pyproject.toml +1 -1
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/LICENSE +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/__init__.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/_diag.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/_fork.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/_lifecycle.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/api.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/config.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/console.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/context.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/decorator.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/ids.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/model.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/py.typed +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/results.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sanitize.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/__init__.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/_batch.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/_chunk.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/_retry.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/_socket.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/_time.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/base.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/callback.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/clickhouse.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/datadog.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/elasticsearch.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/eventhubs.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/file.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/filtering.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/firehose.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/honeycomb.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/http.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/kafka.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/kinesis.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/logging_sink.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/logstash.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/loki.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/memory.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/mongodb.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/multi.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/nats.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/newrelic.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/null.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/postgres.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/pubsub.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/rabbitmq.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/redis.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/sentry.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/sns.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/splunk.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/sqlite.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/sqs.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/stdout.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/syslog.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/transform.py +0 -0
- {log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/worker.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: log-foundry
|
|
3
|
-
Version: 0.10.2.
|
|
3
|
+
Version: 0.10.2.dev57
|
|
4
4
|
Summary: Generate logs for your console and JSON events for downstream consumption.
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -525,6 +525,20 @@ A few conventions hold across every sink below:
|
|
|
525
525
|
The tables show the destination-defining arguments only; sinks that retry also take `max_retries`.
|
|
526
526
|
- **Ownership.** A resource the sink opens itself is closed on `shutdown()`; an injected one is left
|
|
527
527
|
open for you to manage.
|
|
528
|
+
- **Forking.** A forked child repairs the library automatically — it rebuilds the worker so it keeps
|
|
529
|
+
delivering, re-initialises every lock (without which the child's *first* log call can deadlock),
|
|
530
|
+
and throws away any buffered bytes it inherited so they are not written twice. What it does **not**
|
|
531
|
+
do is give the child a sink of its own: the child inherits the same object, so one socket, one
|
|
532
|
+
SQLite handle or one file is now written by two processes — and *closed* by both, each at its own
|
|
533
|
+
exit. That is fine for an append-only file or a queue client and wrong for a connection with
|
|
534
|
+
transaction scope, where a close is protocol-visible. **Under gunicorn, uWSGI or Celery, build a
|
|
535
|
+
connection-holding sink only in the worker process** — `configure()` from gunicorn's `post_fork`
|
|
536
|
+
hook, never under preload, and don't log from the master. Reconfiguring in the child is *not* the
|
|
537
|
+
remedy and is worse than the problem: `configure(sink=...)` closes the sink it replaces, which
|
|
538
|
+
there is the parent's live connection. A master that must log should use a sink whose `close()`
|
|
539
|
+
costs nothing to share, such as `StdoutSink` or `FileSink`. A sink you wrote yourself is repaired
|
|
540
|
+
only if it subclasses `Sink` or a shipped sink; one that satisfies the protocol structurally is
|
|
541
|
+
outside the repair, along with any third-party client's own locks and buffers.
|
|
528
542
|
- **Never crashes the app.** A broken destination degrades logging and nothing more. A sink that
|
|
529
543
|
delivered *part* of a batch counts what it lost (`.failed`, `.dropped_oversized`,
|
|
530
544
|
`.dropped_unadjudicated`, …) and returns, since retrying would re-deliver what already landed.
|
|
@@ -489,6 +489,20 @@ A few conventions hold across every sink below:
|
|
|
489
489
|
The tables show the destination-defining arguments only; sinks that retry also take `max_retries`.
|
|
490
490
|
- **Ownership.** A resource the sink opens itself is closed on `shutdown()`; an injected one is left
|
|
491
491
|
open for you to manage.
|
|
492
|
+
- **Forking.** A forked child repairs the library automatically — it rebuilds the worker so it keeps
|
|
493
|
+
delivering, re-initialises every lock (without which the child's *first* log call can deadlock),
|
|
494
|
+
and throws away any buffered bytes it inherited so they are not written twice. What it does **not**
|
|
495
|
+
do is give the child a sink of its own: the child inherits the same object, so one socket, one
|
|
496
|
+
SQLite handle or one file is now written by two processes — and *closed* by both, each at its own
|
|
497
|
+
exit. That is fine for an append-only file or a queue client and wrong for a connection with
|
|
498
|
+
transaction scope, where a close is protocol-visible. **Under gunicorn, uWSGI or Celery, build a
|
|
499
|
+
connection-holding sink only in the worker process** — `configure()` from gunicorn's `post_fork`
|
|
500
|
+
hook, never under preload, and don't log from the master. Reconfiguring in the child is *not* the
|
|
501
|
+
remedy and is worse than the problem: `configure(sink=...)` closes the sink it replaces, which
|
|
502
|
+
there is the parent's live connection. A master that must log should use a sink whose `close()`
|
|
503
|
+
costs nothing to share, such as `StdoutSink` or `FileSink`. A sink you wrote yourself is repaired
|
|
504
|
+
only if it subclasses `Sink` or a shipped sink; one that satisfies the protocol structurally is
|
|
505
|
+
outside the repair, along with any third-party client's own locks and buffers.
|
|
492
506
|
- **Never crashes the app.** A broken destination degrades logging and nothing more. A sink that
|
|
493
507
|
delivered *part* of a batch counts what it lost (`.failed`, `.dropped_oversized`,
|
|
494
508
|
`.dropped_unadjudicated`, …) and returns, since retrying would re-deliver what already landed.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{log_foundry-0.10.2.dev56 → log_foundry-0.10.2.dev57}/src/log_foundry/sinks/elasticsearch.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|