Wpis z mikrobloga

Jest tu jakiś ekspert od Dockera? Chciałbym żeby logi z pracy Pythona nie lądowały tylko na ekranie ale również w kilku plikach określonych przezemnie wewnątrz programu.
Mam taki kod w #python
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(message)s",
handlers=[
logging.FileHandler("logs/testlog.log"),
logging.StreamHandler()])
i działa on bardzo dobrze poza dockerem, ale wewnatrz dockera nie chce logować do tego "logs/test
log.log". Da się to jakoś ustawić?
#docker #programowanie
  • 17
  • Odpowiedz
@Kristof77: Ok widziałem to, tylko ja potrzebuje logować do różnych plików. Jest to serwer i każde zapytanie ma być logowane do osobnego pliku, nazwa tego pliku musi być powiązana z nazwą requesta więc musi być ustawiana wewnątrz kodu.
  • Odpowiedz
@Kristof77: Hmmm, nie jestem pewien czy wyraziłem się wystarczająco klarownie, spróbuje jeszcze raz :)
Mam sobie program, server.py, program przyjmuje requesty i wykonuje określony kod i chce żeby w zależności od requesta logował do różnych plików. Przychodzi request o nazwie x, loguje do x.log, przychodzi y loguje do y.log itd.
W samym pythonie działa to dobrze, w pewnym miejscu w kodzie mam linijkę
handlers=[logging.FileHandler(".log"),
i od tego momentu loguje mi gdzie
  • Odpowiedz
aaaaa, a ustawiłeś WORKDIR?


@Kristof77: WORKDIR jest ustawiony wewnatrz Dockerfile, ale teraz sprawdziłem że ustawiona tam ścieżka nie istnieje na maszynie. powinna ona istnieć, tzn. zostać ręcznie utworzona przed uruchomieniem kontenera?
BTW. masz coś w ustawieniach wiadomości i nie mogę ci wysłąć PW :/
  • Odpowiedz
@Cierniostwor: nie rób relatywnych ścieżek dla dokera bo będzie płacz. Jak ci Mirek wyżej pisze zrób logowanie do /log/wypok.log czyli ścieżki absolutnej zaczynającej się od slasha, podmontuj przez -v takową do jakiegoś katalogu na hoście przy starcie dockera i możesz zakładać ile plików chcesz, możesz robić podkatalogi.
A i dla testu możesz sobie wejść w konsolę w dockerze i założyć taki plik z palca touch /log/wypok.log. Jak będzie błąd to
  • Odpowiedz
Jest tu jakiś ekspert od Dockera?

Chciałbym żeby logi z pracy Pythona nie lądowały tylko na ekranie ale również w kilku plikach określonych przezemnie wewnątrz programu.


@Cierniostwor: Wybierz jedno ( ͡° ͜ʖ ͡°)

Logi powinny lądować na stdout/stderr. Tylko legacy #!$%@? aplikacje jak JBoss mają ciche przyzwolenie na rozpieprzanie swoich logów po milionach plików. Logi wrzucasz w JSON-ie które potem sobie filtrujesz już odpowiednio w Kibanie, Lokim,
  • Odpowiedz