Skip to main content

Fast MySQL driver build in Cython (Sync and Async).

Project description

Fast MySQL driver build in Cython (Sync and Async).

Created to be used in a project, this package is published to github for ease of management and installation across different modules.

Installation

Install from PyPi

pip install sqlcycli

Install from github

pip install git+https://github.com/AresJef/SQLCyCli.git

For Linux systems, if you encounter the following error when installing the SQLCyCli dependency mysqlclient:

Exception: Can not find valid pkg-config name.
Specify MYSQLCLIENT_CFLAGS and MYSQLCLIENT_LDFLAGS env vars manually

Try the following to fix dependency issue (source: Stack Overflow):

sudo apt-get install pkg-config python3-dev default-libmysqlclient-dev build-essential

Requirements

  • Python 3.10 or higher.
  • MySQL 5.5 or higher.

Features

  • Written in Cython for optimal performance (especially for SELECT/INSERT query).
  • All classes and methods are well documented and static typed.
  • Supports both Sync and Async connection to the server.
  • API Compatiable with PyMySQL and aiomysql.
  • Support conversion (escape) for most of the native python types, and objects from libaray numpy and pandas. Does NOT support custom conversion (escape).

Benchmark

The following result comes from benchmark:

  • Device: MacbookPro M1Pro(2E8P) 32GB
  • Python: 3.12.4
  • MySQL: 8.3.0
  • mysqlclient: 2.2.4
  • PyMySQL: 1.1.1
  • aiomysql: 0.2.0
  • asyncmy: 0.2.9
# Unit: second | Lower is better
name        type    rows    insert-per-row  insert-bulk select-per-row  select-all  update-per-row  update-all  delete-per-row  delete-all
mysqlclient sync    50000   1.734200        0.427027    1.756226        0.117552    1.901870        0.365056    1.651022        0.131151
SQLCyCli    sync    50000   2.203967        0.293410    2.331576        0.062152    2.279076        0.352106    2.115025        0.107902
PyMySQL     sync    50000   2.607349        0.412063    4.219286        0.321089    2.572826        0.345419    2.304015        0.104720
SQLCyCli    async   50000   3.342991        0.270254    4.297667        0.141201    3.466729        0.346168    3.343880        0.105293
aiomysql    async   50000   3.464662        0.384193    5.115068        0.322858    3.582689        0.345661    3.444377        0.104894
asyncmy     async   50000   3.851011        0.416715    5.604330        0.314939    3.824736        0.346903    3.580444        0.104748

Usage

Use connect() to create one connection (Sync or Async) to the server.

import asyncio
import sqlcycli

HOST = "localhost"
PORT = 3306
USER = "root"
PSWD = "password"

# Synchronous Connection
def test_sync_connection() -> None:
    with sqlcycli.connect(HOST, PORT, USER, PSWD) as conn:
        with conn.cursor() as cur:
            cur.execute("SELECT 1")
            res = cur.fetchone()
            assert res == (1,)
    # Connection closed
    assert conn.closed()

# Asynchronous Connection
async def test_async_connection() -> None:
    async with sqlcycli.connect(HOST, PORT, USER, PSWD) as conn:
        async with conn.cursor() as cur:
            await cur.execute("SELECT 1")
            res = await cur.fetchone()
            assert res == (1,)
    # Connection closed
    assert conn.closed()

if __name__ == "__main__":
    test_sync_connection()
    asyncio.run(test_async_connection())

Use create_pool() to create a Pool for managing and maintaining Async connections to the server.

import asyncio
import sqlcycli

HOST = "localhost"
PORT = 3306
USER = "root"
PSWD = "password"

# Pool (Context Manager: Connected)
async def test_pool_context_connected() -> None:
    async with sqlcycli.create_pool(HOST, PORT, USER, PSWD, min_size=1) as pool:
        # Pool is connected: 1 free connection (min_size=1)
        assert not pool.closed() and pool.free == 1
        async with pool.acquire() as conn:
            async with conn.cursor() as cur:
                await cur.execute("SELECT 1")
                res = await cur.fetchone()
                assert res == (1,)
    # Pool closed
    assert pool.closed() and pool.total == 0

# Pool (Context Manager: Disconnected)
async def test_pool_context_disconnected() -> None:
    with sqlcycli.create_pool(HOST, PORT, USER, PSWD, min_size=1) as pool:
        # Pool is not connected: 0 free connection (min_size=1)
        assert pool.closed() and pool.free == 0
        # Connect automatically
        async with pool.acquire() as conn:
            async with conn.cursor() as cur:
                await cur.execute("SELECT 1")
                res = await cur.fetchone()
                assert res == (1,)
        # 1 free connection
        assert pool.free == 1
    # Pool closed
    assert pool.closed() and pool.total == 0

# Pool (Create Directly: Connected)
async def test_pool_direct_connected() -> None:
    pool = await sqlcycli.create_pool(HOST, PORT, USER, PSWD, min_size=1)
    # Pool is connected: 1 free connection (min_size=1)
    assert not pool.closed() and pool.free == 1
    async with pool.acquire() as conn:
        async with conn.cursor() as cur:
            await cur.execute("SELECT 1")
            res = await cur.fetchone()
            assert res == (1,)
    # Close pool manually
    await pool.close()
    assert pool.closed() and pool.total == 0

if __name__ == "__main__":
    asyncio.run(test_pool_context_connected())
    asyncio.run(test_pool_context_disconnected())
    asyncio.run(test_pool_direct_connected())

Acknowledgements

SQLCyCli is build on top of the following open-source repositories:

SQLCyCli is based on the following open-source repositories:

Project details


Download files

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

Source Distribution

sqlcycli-1.0.2.tar.gz (2.5 MB view details)

Uploaded Source

Built Distributions

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

sqlcycli-1.0.2-cp312-cp312-win_arm64.whl (3.6 MB view details)

Uploaded CPython 3.12Windows ARM64

sqlcycli-1.0.2-cp312-cp312-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.12Windows x86-64

sqlcycli-1.0.2-cp312-cp312-musllinux_1_1_x86_64.whl (11.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ x86-64

sqlcycli-1.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

sqlcycli-1.0.2-cp312-cp312-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

sqlcycli-1.0.2-cp312-cp312-macosx_10_9_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

sqlcycli-1.0.2-cp312-cp312-macosx_10_9_universal2.whl (5.3 MB view details)

Uploaded CPython 3.12macOS 10.9+ universal2 (ARM64, x86-64)

sqlcycli-1.0.2-cp311-cp311-win_arm64.whl (3.6 MB view details)

Uploaded CPython 3.11Windows ARM64

sqlcycli-1.0.2-cp311-cp311-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.11Windows x86-64

sqlcycli-1.0.2-cp311-cp311-musllinux_1_1_x86_64.whl (11.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

sqlcycli-1.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

sqlcycli-1.0.2-cp311-cp311-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

sqlcycli-1.0.2-cp311-cp311-macosx_10_9_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

sqlcycli-1.0.2-cp311-cp311-macosx_10_9_universal2.whl (5.3 MB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

sqlcycli-1.0.2-cp310-cp310-win_arm64.whl (3.6 MB view details)

Uploaded CPython 3.10Windows ARM64

sqlcycli-1.0.2-cp310-cp310-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.10Windows x86-64

sqlcycli-1.0.2-cp310-cp310-musllinux_1_1_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

sqlcycli-1.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

sqlcycli-1.0.2-cp310-cp310-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

sqlcycli-1.0.2-cp310-cp310-macosx_10_9_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

sqlcycli-1.0.2-cp310-cp310-macosx_10_9_universal2.whl (5.3 MB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file sqlcycli-1.0.2.tar.gz.

File metadata

  • Download URL: sqlcycli-1.0.2.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for sqlcycli-1.0.2.tar.gz
Algorithm Hash digest
SHA256 97d569ba72a0e0f04b1f06058722d7c175c8e79698d62b5fe92e5daa85e367a7
MD5 10a3771e901203135a00fbabe82f5398
BLAKE2b-256 bd11276f6fd6620267332555564545c1e4dea19e0beace87cd4c2d3fcf3d0dd4

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: sqlcycli-1.0.2-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for sqlcycli-1.0.2-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 9b9e558095bddbdf2f63f8b9b228af32d9c99d1dd3dee8abd3e86ff2ba5136e2
MD5 c2f0d27f06240121a1a7a547f4f69639
BLAKE2b-256 c9980ba78b5c27e8c253f47a4457a3fcfda05e7c71e8ceaab5fcd5fc989510c5

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: sqlcycli-1.0.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for sqlcycli-1.0.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8037c3f43d92f75e0219557635c6ce7cfdedd45b8a82b2bc35f6041a0fb54a65
MD5 d987b1802e9aed628c65ae8e78a6df31
BLAKE2b-256 cd8984235818ac3447bde2e5ddfdd87f4e66f54d050744bc660a3ad0951eee8f

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp312-cp312-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for sqlcycli-1.0.2-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 fa136a9d935da008b566c2daf33b45aa0d255f0cd2cbc55d21935262cb97bfaf
MD5 d15af179069ccc9320036666c6b86c72
BLAKE2b-256 998173bb4c185f45f56de6ccd7f44f3fecbf333b05ea7432f2cde36cc33e05b4

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sqlcycli-1.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f3a2fcfdc038467a4fb9563b1dfc52d1e4d8ee5b2e44510b50ce20b722d07a40
MD5 bd142e6ac0517006c4d4acc9c1050b6e
BLAKE2b-256 0c6999e99743aaee8015da2dd167190c91f313cc6a285cb6c0533626c5996ef4

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sqlcycli-1.0.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fa2471bdc569d0d7118f53a8b6864c1bd8ed0c5e2dcdda8889d8c4a85c2f91d2
MD5 ab033718effd8ad9078243de959f3086
BLAKE2b-256 17684e88c9b71bad5105092b116e1928a1ae484da2d8850e014e2167a562077b

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for sqlcycli-1.0.2-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a4df10fb4ea7d0a91de9b36c6d305ce739d9e835b82e56b94bb1d7da323cb0c6
MD5 57b8c20cfcc9edc1464cabfd5bf11ca1
BLAKE2b-256 1f30a1d60841020c6e6c494fad383b0fbc10511dcb562b5b0525e83e7fd92298

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp312-cp312-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for sqlcycli-1.0.2-cp312-cp312-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 aee5eac51736aed0837fc215fa43c614822bb307ddf34e5ba97b0e93a00a8dbe
MD5 6997e5afef3c79387124cf93b6f6a9f3
BLAKE2b-256 4a067830282cd186840ca658e958dd6ec05c75ff0173d0a8ce8d535cb12510a0

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: sqlcycli-1.0.2-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for sqlcycli-1.0.2-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 ed9b6b988c1a4084bc5ce3b4dd4c92918313a197c35f3baf26399b6ed8f2c5a9
MD5 84491b9996641c473b7323f81c476588
BLAKE2b-256 ffd9f8106b3fc0d935e2309325358feb84bb51f448a3dddf1b8dc1c7ff6b1ab7

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: sqlcycli-1.0.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for sqlcycli-1.0.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a98e977cdf94469ed66f98675917d6287239d46a69ecf851d7b16b939634099e
MD5 c7e32298de070e1f622cf980dc0cff60
BLAKE2b-256 c0a6282ba13f527d43bd30f9d5726879e252907ce30fc21a03228216bd356f61

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for sqlcycli-1.0.2-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 762bd81c18307762c63844838abbf4a39cf806b50f180563dd9d5fbce8ff6ea5
MD5 dc970bc1ece988ceeac637f2c9e44ac2
BLAKE2b-256 5ee487a83dad0964c776f23ffc093681a178957b3723276e84c0ce580680e365

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sqlcycli-1.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cb9d443f7111506bdf3903c22249a8458659c35c8881970f9af88e07273350ad
MD5 f99a15a1e7217b9b7ffb6c8454ad4621
BLAKE2b-256 194cb5e33bbfdcbd5da13abfca9d6922c42d0386424d4539d152de254bc5cdbd

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sqlcycli-1.0.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 24ff7c7d64e191833d195f097fd8959bc7454af5cad6729184d7497345b4b8e6
MD5 300b43239c895889ba4d2ce2bed0fbcd
BLAKE2b-256 efa878985164e575a44d0ef0dcb225b8a9b7a65239581325cc3f43bdc441bafb

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for sqlcycli-1.0.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4962fe79079711bc68fa123b00ea1c94f0c2f975b9a321afbe70a27b1d6025b2
MD5 6f5ec08d7e82ec7a1f3e239428b7d9b0
BLAKE2b-256 4fc54a68f21ca7a770a8f2a233cbeb8ba909f575dc7f4fa7bcd648d744875cd6

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for sqlcycli-1.0.2-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 ffca2b64fbd91c1094a2219670cc30f7f1767a0f0876b329633d4009dec241e4
MD5 c38c3b82008d539678ff63f2e52e6bac
BLAKE2b-256 1313549d27c4532660fac7ec5d6843d2170384998100a5a23c29f3ca0b236903

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp310-cp310-win_arm64.whl.

File metadata

  • Download URL: sqlcycli-1.0.2-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: CPython 3.10, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for sqlcycli-1.0.2-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 0b7f9c7f05a12815b7827e994927b5d8d3d21bd3e9fea08c7cf469dfb3ceec8e
MD5 4288608b1ec2805fd5c160afd28f3476
BLAKE2b-256 a94c1c57f026fcb7cec72cbf11cf433e8f5324114c14dd48d7b7f0da49353ecd

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: sqlcycli-1.0.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for sqlcycli-1.0.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1c07eca3ee675ad24372a57d495e09e3544793d9d3f149bfc696b5781dc1eed8
MD5 3a3661f7ee80b32bddc5c6e736c6d7d0
BLAKE2b-256 385fa11ffadac0183e757c2a81d7df3be4f53cf6af42873eac2ec13cc8e81252

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for sqlcycli-1.0.2-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 975f012243ee0b5817762ff6f600915add335b039b5fc32721938cb38a3c4d32
MD5 1a164abd6dbe5df4e4972e1279dbf21b
BLAKE2b-256 075066c8a412134fab7ce7c03e789758fec1aa2953c48fd6e8da046a0f7bd8c4

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sqlcycli-1.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4cf378e2ff991751d4f89377d7598f2b3f953a61b67588f0d32fc07ea96601a6
MD5 7a126085b21a75fd995f6335c65e6eab
BLAKE2b-256 72e4b44ea05a677567ef71c4fc00f2181a937a40cba33bcdc49df4576107bb91

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sqlcycli-1.0.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 493871e81024e8826a19546957afd97696cb05dfa039871e4d1b18e68606e562
MD5 979cd911fe9cccdfac7e0148066e027f
BLAKE2b-256 96bcb23ada60825611c72b8fb65092ef2247b8d6bdd0f4e95677a0c82f9c7425

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for sqlcycli-1.0.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 41432f33e5eaf4b33e6791fa7a42fcb04264f4265486f47ffcb6c4cb918440b1
MD5 4699e36ac9dfb35cac3f5767f31a70eb
BLAKE2b-256 5d5d4551784c72d348780637d0aacee76ee754dd9ec230767b1e320584e9fd22

See more details on using hashes here.

File details

Details for the file sqlcycli-1.0.2-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for sqlcycli-1.0.2-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 ac5a206c7092fb40034efaff8304ae9e9be262f15908932556ff4ae09991c229
MD5 6d59aca4a05ab161e13437bf601097f7
BLAKE2b-256 fc02825797c55489602217e07a048af57410ba4f0a1e3cd3925dccdd8db27d94

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