diff --git a/Dockerfile b/Dockerfile index bcc5ac5..533a719 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,7 +38,12 @@ RUN dpkg -i /libgl1-mesa-dri.deb \ # Create flaresolverr user && useradd --home-dir /app --shell /bin/sh flaresolverr \ && mv /usr/bin/chromedriver chromedriver \ - && chown -R flaresolverr:flaresolverr . + && chown -R flaresolverr:flaresolverr . \ + # Create config dir + && mkdir /config \ + && chown flaresolverr:flaresolverr /config + +VOLUME /config # Install Python dependencies COPY requirements.txt . diff --git a/README.md b/README.md index 2c65589..562ba60 100644 --- a/README.md +++ b/README.md @@ -266,13 +266,14 @@ This is the same as `request.get` but it takes one more param: | Name | Default | Notes | |--------------------|------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------| | LOG_LEVEL | info | Verbosity of the logging. Use `LOG_LEVEL=debug` for more information. | +| LOG_FILE | none | Path to capture log to file. Example: `/config/flaresolver.log`. | | LOG_HTML | false | Only for debugging. If `true` all HTML that passes through the proxy will be logged to the console in `debug` level. | | PROXY_URL | none | URL for proxy. Will be overwritten by `request` or `sessions` proxy, if used. Example: `http://127.0.0.1:8080`. | | PROXY_USERNAME | none | Username for proxy. Will be overwritten by `request` or `sessions` proxy, if used. Example: `testuser`. | | PROXY_PASSWORD | none | Password for proxy. Will be overwritten by `request` or `sessions` proxy, if used. Example: `testpass`. | | CAPTCHA_SOLVER | none | Captcha solving method. It is used when a captcha is encountered. See the Captcha Solvers section. | | TZ | UTC | Timezone used in the logs and the web browser. Example: `TZ=Europe/London`. | -| LANG | none | Language used in the web browser. Example: `LANG=en_GB`. | +| LANG | none | Language used in the web browser. Example: `LANG=en_GB`. | | HEADLESS | true | Only for debugging. To run the web browser in headless mode or visible. | | TEST_URL | https://www.google.com | FlareSolverr makes a request on start to make sure the web browser is working. You can change that URL if it is blocked in your country. | | PORT | 8191 | Listening port. You don't need to change this if you are running on Docker. | diff --git a/docker-compose.yml b/docker-compose.yml index be0c4af..76d5b24 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,9 +7,12 @@ services: container_name: flaresolverr environment: - LOG_LEVEL=${LOG_LEVEL:-info} + - LOG_FILE=${LOG_FILE:-none} - LOG_HTML=${LOG_HTML:-false} - CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none} - TZ=Europe/London ports: - "${PORT:-8191}:8191" + volumes: + - /var/lib/flaresolver:/config restart: unless-stopped diff --git a/src/flaresolverr.py b/src/flaresolverr.py index e29745f..239098b 100644 --- a/src/flaresolverr.py +++ b/src/flaresolverr.py @@ -87,6 +87,7 @@ if __name__ == "__main__": # validate configuration log_level = os.environ.get('LOG_LEVEL', 'info').upper() + log_file = os.environ.get('LOG_FILE', None) log_html = utils.get_config_log_html() headless = utils.get_config_headless() server_host = os.environ.get('HOST', '0.0.0.0') @@ -104,6 +105,13 @@ if __name__ == "__main__": logging.StreamHandler(sys.stdout) ] ) + if log_file: + log_file = os.path.realpath(log_file) + log_path = os.path.dirname(log_file) + os.makedirs(log_path, exist_ok=True) + + logging.getLogger().addHandler(logging.FileHandler(log_file)) + # disable warning traces from urllib3 logging.getLogger('urllib3').setLevel(logging.ERROR) logging.getLogger('selenium.webdriver.remote.remote_connection').setLevel(logging.WARNING)