Why use tail workers over producer worker can be used to send all the logs itself?

I want to collect error logs in my app and I came across tail worker. And I couldn't understand the logic behind its existence. Why would I use tail workers when I can just send all the errors and logs at the end of the request. I can use try catch block to capture all the errors and also save the tail workers invoke request costs which is same as workers? Do it provide any added benefits that I couldn't get?
2 Replies
Chaika
Chaika3mo ago
iirc Tail Workers originally were made because of Workers for Platforms, wanting to capture errors on user code. There is quite a few benefits they offer yea, they run regardless of the error type: https://developers.cloudflare.com/workers/runtime-apis/handlers/tail/ There are a few errors you simply can't catch in your code. Exceeded memory, exceeded cpu, cancelled, your code returning an invalid Response object/missing body/etc
Cloudflare Docs
Tail Handler · Cloudflare Workers docs
The tail() handler is the handler you implement when writing a Tail Worker. Tail Workers can be used to process logs in real-time and send them to a …
Chaika
Chaika3mo ago
You can also attach the same code to a ton of workers without having to duplicate it Is it worth the extra invocation costs? I think it depends on what you're doing. You always have Worker Trace Events as well if you're on Paid