Bom dia.
Acho que você não errou.
O seu código está de fato fazendo o append do texto no final do arquivo, e creio que seja o objetivo, pois é monitoramento, então devemos saber a evolução ao longo do tempo. Mas, se quiser que passe a sobrescrever, troque o >> por >.
Quanto àquela mensagem, ela acontece na primeira linha do monitorar_logs, e ela não é um erro, é um aviso, indica que o seu sistema está achando que o conteúdo de /var/logs/syslog é um binário, talvez porque teve um log muito louco lá ou algo assim.
Como exemplo, eu fiz um grep aqui em um binário do Python, e eu recebi esse mesmo aviso, mas ao fazer o echo do $? (que é o código de retorno) ele me retorna como 0, que significa sucesso.
familia@planetae:~/Documents/Projects/lilo-finance-manager$ grep app.routes src/user_management/app/__pycache__/app.cpython-313.pyc
grep: src/user_management/app/__pycache__/app.cpython-313.pyc: binary file matches
familia@planetae:~/Documents/Projects/lilo-finance-manager$ echo $?
0
Como dá pra ver, app.routes existe no arquivo, mas ele é um arquivo binário, e como não é comum usar grep em arquivos binários, ele dá esse aviso para você saber se é isso mesmo o que você quer.
familia@planetae:~/Documents/Projects/lilo-finance-manager$ tail src/user_management/app/__pycache__/app.cpython-313.pyc
)r'rrr�
create_appr)3s
��
�9�r�apiz/api/v1)�
url_prefix�/�GET)�methodsc�(�[S[05S4$)zHealth check endpoint.�message��)rrrr�
health_checkr2As��
�I�w�'�
(�#�
-�-r__main__)rzDATABASE_URI is not setT)�debug)"�atexit�logging�flaskrrr�
app.configrr�app.routes.authr �app.routes.usersr
�
app.sessionsr
setLevel�INFOrregister�str�boolr'r)rr%r$�router2�
��+�+�8�8�#�%�un�rr<modu␦�>rEs ␦� ������
�
��6�����U�␦�C�␦�d�␦�u�␦�:�E��
�5�(�y� 9�����'�"����(�#���c�E�7��#�.�$�.�
�z��'���2�33�
�,�
�C��G�G�$�G��␦r
familia@planetae:~/Documents/Projects/lilo-finance-manager$