grkamil / laravel-telegram-logging

Send logs to Telegram chat via Telegram bot
MIT License
147 stars 33 forks source link

All template wrap tag and length more 4096 #36

Open i3bepb opened 1 year ago

i3bepb commented 1 year ago

If error message length over 4096 and i change template:

<b>{{ $appName }}</b> ({{ $level_name }})
Env: {{ $appEnv }}
<pre>[{{ $datetime->format('Y-m-d H:i:s') }}] {{ $appEnv }}.{{ $level_name }} {{ $formatted }}</pre>

Message break and I get two messages:

<b>Project</b> (ERROR)
Env: local
<pre>[2023-03-01 17:41:32] local.ERROR many text

and:

many text</pre>

When send messages to telegram as a response we get 400 error:

{
  "ok": false,
  "error_code": 400,
  "description": "Bad Request: can't parse entities: Can't find end tag corresponding to start tag pre"
}

If not use wrap tag everything is fine.

Addition

I want 1 error = 1 message even if the size is over 4096. Example cut off and add ...

<b>Project</b> (ERROR)
Env: local
[2023-03-01 17:41:32] local.ERROR bla-bla-bla ...
grkamil commented 1 year ago

Maybe you can cut $formatted message in the template if you need?

i3bepb commented 1 year ago

Maybe you can cut $formatted message in the template if you need?

Yes

Is it planned to do something like this?

i3bepb commented 1 year ago

I decided to make a package https://github.com/i3bepb/laravel-crop-str-blade-directive with a directive for Blade that cuts the variable to the right size. With it, you can do this:

<b>{{ $appName }}</b> ({{ $level_name }})
Env: {{ $appEnv }}
<pre>[{{ $datetime->format('Y-m-d H:i:s') }}] {{ $appEnv }}.{{ $level_name }} @crop($formatted, 3846) }}</pre>

For others parts message I reserve 250 (4096 - 250 = 3846)