Skip to main content

Asynchronous library for FTP-based file system operations

Project description

pyftpkit

hooks tests

Asynchronous library for FTP-based file system operations.

Installation

Since this library relies on cURL and PycURL, you are to install the necessary system packages before proceeding with the installation:

# On Ubuntu:
set -ex \
    && sudo apt-get update --yes \
    && sudo apt-get install --yes \
        curl \
        libcurl4-openssl-dev \
        libssl-dev \
    && sudo apt-get clean \
    && sudo rm --recursive --force /var/lib/apt/lists/*

# On Fedora:
set -ex \
    && sudo dnf update --assumeyes \
    && sudo dnf install --assumeyes \
        curl \
        libcurl-devel \
        openssl-devel \
    && sudo dnf clean all

Use pip to install pyftpkit together with its command-line interface by running the following command:

python3 -m pip install --user pyftpkit

Basic usage

WARNING: It is important to note that paths on an FTP server have to be absolute and start from the root. Additionally, when specifying a directory path, include a trailing / to clearly distinguish it from a file path.

Here is a list of examples demonstrating the library's usage across various covered scenarios:

Here is a simple example demonstrating how to upload and download data to and from an FTP server using the command-line interface provided by this library:

# The library provides two main commands -- one for uploading and one for downloading data.
# It is recommended to create a local wrapper script to simplify running this command.
docker run \
    --interactive \
    --network=host \
    --rm \
    --tty \
    --user="$(id -u):$(id -g)" \  # to avoid permission issues on mounted volumes
    --volume="$(pwd):$(pwd)" \
    --volume=/tmp:/tmp \  # this is for the logging system
    --workdir="$(pwd)" \
"docker.io/vladpunko/pyftpkit:${IMAGE_TAG:?err}" "$@"

To simplify configuration, the library automatically loads FTP server settings from a .env file located in the current working directory.

Below are sample CLI usage scenarios, assuming a .env file is already present and may supply part or all of the configuration parameters:

Example №1

Upload one file to the target FTP directory without altering its filename. Update the host and port using the values provided during transfer, replacing any previously loaded settings from the file. If the destination directory is missing, create it before uploading.

pyftpkit -H 0.0.0.0 -P 2222 upload --src 1.txt --dst '/1.txt'

Example №2

Upload a batch of files to the specified directory without modifying their filenames. Use the configuration settings defined in the file. If the destination directory is not present, create it before uploading.

pyftpkit upload --src 1.txt 2.txt 3.txt --dst '/documents/'

Example №3

Download all content from the FTP server into the designated local folder while preserving the full directory structure. Apply the host, port, and credentials values provided through the CLI, replacing any corresponding settings previously loaded from the file.

pyftpkit -H 0.0.0.0 -P 2222 -u admin -p admin download --src '/' --dst ./data/

Example №4

Download a selected group of files as a batch, applying new filenames during retrieval. Use the FTP connection settings defined in the configuration file.

pyftpkit download --src 1.txt 2.txt --dst passwords.txt data.txt

Contributing

Pull requests are welcome. Please open an issue first to discuss what should be changed.

Please make sure to update tests as appropriate.

# Step -- 1.
python3 -m venv .venv && source ./.venv/bin/activate && pip install pre-commit tox

# Step -- 2.
pre-commit install --config .githooks.yml

# Step -- 3.
tox && tox -e lint

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyftpkit-0.1.2-cp314-cp314-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

pyftpkit-0.1.2-cp314-cp314-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

pyftpkit-0.1.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (118.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyftpkit-0.1.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (111.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

pyftpkit-0.1.2-cp314-cp314-macosx_11_0_arm64.whl (103.1 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pyftpkit-0.1.2-cp313-cp313-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pyftpkit-0.1.2-cp313-cp313-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pyftpkit-0.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (118.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyftpkit-0.1.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (110.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

pyftpkit-0.1.2-cp313-cp313-macosx_11_0_arm64.whl (102.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyftpkit-0.1.2-cp312-cp312-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pyftpkit-0.1.2-cp312-cp312-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pyftpkit-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (117.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyftpkit-0.1.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (109.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

pyftpkit-0.1.2-cp312-cp312-macosx_11_0_arm64.whl (102.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyftpkit-0.1.2-cp311-cp311-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pyftpkit-0.1.2-cp311-cp311-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pyftpkit-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (116.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyftpkit-0.1.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (109.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

pyftpkit-0.1.2-cp311-cp311-macosx_11_0_arm64.whl (101.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyftpkit-0.1.2-cp310-cp310-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pyftpkit-0.1.2-cp310-cp310-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pyftpkit-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (115.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyftpkit-0.1.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (108.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

pyftpkit-0.1.2-cp310-cp310-macosx_11_0_arm64.whl (100.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file pyftpkit-0.1.2-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3dd8df7da853945356cb6ed5c9a09374d6f83226953bc50fc9bd0c791256c5d5
MD5 da657b407583763e9068aae7f92af4fe
BLAKE2b-256 c8bdd14a032d34651b38fd0cc309f2e628dbceaeaf4d6ceb51fe7697fae463f9

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c1d381d56d6c48fdc669ccdc4e85f4cfcf627d422a2876c642e73385735db0de
MD5 9b38ba36ed6ba0d98bc950067f4d22d6
BLAKE2b-256 a87b067635289a7dbe6fe3802b4bf9d6dfea7faafdf0241ccd4f4b3b36b12506

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f049c867d9fb146530c6f7e832126054afe55de357a3ecaa455bd656cd919339
MD5 b24a9597a943b40c87dd2f4a4e09b5b5
BLAKE2b-256 ab0153f81164ad87a08d76ccfedf6fb022af63e35dd1a890ace362a6e885fe82

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a8e6990a8f734e61d5d3aeb6554f485b19363d76681b2806f0148134402bb8c3
MD5 069f2d1fc4aab7eac3d7b3a0e22120da
BLAKE2b-256 26675043b9217d5179f2e3531016030af178c8a5ca3edc8d457f2b134787aa0b

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1862a31a791470658b56199afe13c2e905c97df8ea5abe3858ff421fd7ce4283
MD5 d5c714eb85ad1cc0a23e9988fab0de15
BLAKE2b-256 f0ddc63ab6699830d746469a734fdd57e1c5468525c8c28e5784b80c279f8f98

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e39c78f14735e3aff40dcdb5a4e75d6b538acad442b0d0a1b4ede3deae579bae
MD5 f63637c88ae2f0852faa4f965cf72a16
BLAKE2b-256 0bd2873cab0f563ed8dccac8d9592610230aa54b9cff53ee42740299edc05c2b

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 94f305fbcc0861d72553267ecf85fa27968170f219872f4653ca2d4f38c5c2be
MD5 af77354a9d33163c54bad7db25180b98
BLAKE2b-256 f30f2159176c2888068c8733282e5f025e4dcf2f1807bb98820aee34c9ae83ea

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 03ca7286ed74b9a5058a8bbdcf182eb3e857170f0d75e60b1460b1c2db74a4ca
MD5 b7fee6a1507ee10992b8f1a5fa7cc36e
BLAKE2b-256 12f8c3b5da5ccb306bb64bbf1ce6d7c2b5e709bc0d307704d7752e7b5f8c9e34

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f79fcfbdc7eaaa9df5134a59f5f3a1bdcaa067b99650f11dc76fd4113e07a644
MD5 8cc222e0356b612a64a063fd9b06d320
BLAKE2b-256 b6be5baf1d4c6774bd1b406789b28b1731c1d9db5505027a4b9c46b8c9c81533

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7f19d7aa21861ac4cee12425072909719bb30c0acfeae0665189a054fe597914
MD5 9eabd77d6fed3b42c1c18c8ee7900586
BLAKE2b-256 c01875fe599216e0513568513799291f18b9ecad35970ef5eca5929990cff2be

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f5ea89548fff1ea84e60270879c9dda226fd1ff1344833cfc96d7c86999c44b4
MD5 071a1c27edc408701285e4c10d0c15a7
BLAKE2b-256 63b8ec40f512bad5bec364d20758812a8ae9dfa08753da0fae96052fa639aa69

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3a5c2713f3e30c2d1cfd686a614a273286522eb1c3f9b6f9c8c9ba278ba6c3b1
MD5 b3c64681d06cedb1df8e4f95a58323a8
BLAKE2b-256 7712fb75448f943685164580893ae19bd9266f414e4330706f2e16ffe431d041

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f02c01f51b77a28b7f37849b62cc1e6067750073d798470f030a44e9b77fe315
MD5 319e03b375824f44b941c598ae3b8c14
BLAKE2b-256 7ef4b2dd9a9d31b49c0b48a38c7f3e3acd327a7b3c9af9052c19e9abe7e38e5c

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 50ea1dd142a7c21de015f43cbf6687c591c8695bc4a5d72a6c0989fc2f5b5413
MD5 bb5019b5f49ce71a64252a3b28cf2dd0
BLAKE2b-256 1726f1739d7307f2b146b039d2b71b0be3c97b88fec545ce85683ba9aba42819

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2526218a5b2649b73b8b98328041390607f808b45c07e764a0c87712ef8970ec
MD5 6a72f8aa74ed762f95a11941ff560977
BLAKE2b-256 68e1f0e6be41dba3078d012208a656149fa00b22460eef03da45ab46bc040f31

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 dee59840d420029c164ee0414df7695e7a7a085cb34893ae093305ff817b7480
MD5 981df1125d0a06ef488cae55dafedbbf
BLAKE2b-256 1a8d7269279ec665635d159fa14df660e25ebb5c6b383e1109ec52e45abca60b

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0a185535df71c7d40a9861fadbc357aac1fc3dc7e3644321d7de94df12a06c0e
MD5 bcd176b8b9f2f7837e5f027d4a079480
BLAKE2b-256 4592384c6308ea0ce24bb10290779e7776ffebef428ac986adf07b57080c1116

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 60c04d13763f5e18c143fefd622ee529fd1af96865ba7f92d693c57976a173ae
MD5 4edc4047425866a8cf2495cba8ad9a00
BLAKE2b-256 bb939e94efd47d698316bc1e711499058114e0ff8370d394b15ed0dfda3f2add

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9fca6ab8d179d9a0880badbd22efbb623bcf4ee4fcf6aadbba143495a5e4665c
MD5 9159e30b601c7f7ffa7f1fad1b098c6a
BLAKE2b-256 51bf26fcb0dd964fa0197bdc7e24e7e7f648a101bd9ecde8011943887751aa43

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2c39f336d76654643e1db1349bc0f27eb3425ea68b3a246dfd8cbbc2ab032f30
MD5 71aa4d4dd93102c3475844479447b3e8
BLAKE2b-256 0bd3cae5d7b1521070b67ec30471a2435d4f31b79a3678b97497771144accc9a

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3b397c74dd45a82605de025c338696eab682ea1099e31f22ea594da3fcba56c5
MD5 3f759be1e71785d86520a6dd9a2a30f6
BLAKE2b-256 e84144674be7f3c4a860335d83055080d9dc62df2177a1484672601777870d59

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f8c799c46d5f7cf4c5b39b0c4e5c1faf975b9508e4c16863009ef7cd2b7ef19a
MD5 255dd0d83729fdf7433c7f7dc647fbb9
BLAKE2b-256 5b7838ba2bfe41b1566b9b203f5d0c5eba5dc3712634688ce3539e6d72b8ecf3

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 385a1c4fafb6fce35b4721e34683f4e9ad8437f45d18a918c8042cc7746066e4
MD5 d45018409d44141945767b661b86bad9
BLAKE2b-256 96bebdea775610fb5911be23354a7f8bdc23abc36895c322e242dfd05f71bab6

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 22ec91f13934bcc47e07dd7c8aab58f3e4c2795527f3f43001f3a83aa3f0a9ad
MD5 1ec15421d41c8f55ce4b57ecd11170b0
BLAKE2b-256 28af552e739ce180f1c16c39b92b4a1b6ff54764015ed161f551dad984f9d1ef

See more details on using hashes here.

File details

Details for the file pyftpkit-0.1.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyftpkit-0.1.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f36def44556e004a464e3f64299e12c6692e834d12fb0bd0565bd77ceefa4b22
MD5 c9a65e23ef3d48a9e07fca0d3feac4b3
BLAKE2b-256 efa9884a9fe39820a5f156c925a43ba378d267b2c6aaf9403d274800c5d877bb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page