Python CLI ง่ายๆ บันทึกเหตุการณ์เพื่อ Compliance

สวัสดีครับ

โปรแกรมเมอร์แบบเราๆ เจอไฟล์ Config เยอะแยะไปหมดเลยใช่ไหมครับ บางทีก็อยากเช็คว่ามันถูกต้องตามกฏระเบียบหรือเปล่า หรือมีใครมาแก้ตอนไหนบ้างนะ วันนี้ผมจะมาแชร์วิธีสร้าง Python CLI ง่ายๆ ที่ไม่แค่ช่วยเช็ค แต่ยังบันทึกทุกเหตุการณ์ไว้ด้วยระบบ Logging เพื่อให้เราเอาไปใช้ยืนยันเรื่อง Compliance หรือตรวจสอบความปลอดภัยได้เลยนะครับ

1. เตรียมโปรเจกต์กันก่อน

เรามาเริ่มต้นสร้างไฟล์ main.py กับ requirements.txt กันก่อนเลยนะครับ สำหรับ CLI ตัวนี้ ผมจะใช้ Click ไลบรารี่ดังๆ ที่ใช้ง่ายมากๆ ครับ

# requirements.txt
Click==8.1.7

จากนั้นก็ pip install -r requirements.txt ได้เลยครับ

2. โครงสร้าง CLI พื้นฐาน

มาดูโค้ด CLI ง่ายๆ ที่มีคำสั่ง check-config กันก่อนเลยนะ โค้ดนี้จะแค่จำลองว่าเรากำลังเช็ค Config บางอย่างอยู่นะครับ

# main.py
import click
import logging

# ตั้งค่า Logging พื้นฐานไว้ก่อน
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler(\"compliance_audit.log\"), # เก็บลงไฟล์
        logging.StreamHandler() # แสดงบน Console ด้วย
    ]
)
logger = logging.getLogger(__name__)

@click.group()
def cli():
    pass

@cli.command('check-config')
@click.option('--path', default='./config.txt', help='Path to the config file.')
def check_config(path):
    logger.info(f\"[Audit] เริ่มต้นตรวจสอบไฟล์ Config: {path}\")
    try:
        with open(path, 'r') as f:
            content = f.read()

        # จำลองการตรวจสอบ Config
        if \"secure_setting=true\" in content:
            logger.info(f\"[Audit] ตรวจพบการตั้งค่า 'secure_setting=true' ใน {path}. ผ่านเกณฑ์.\")
            click.echo(f\"Config ที่ {path} ดูดีนะครับ.\")
        else:
            logger.warning(f\"[Audit] ไม่พบ 'secure_setting=true' ใน {path}. อาจจะไม่ตรงตามเกณฑ์.\")
            click.echo(f\"Config ที่ {path} อาจจะต้องดูเพิ่มนะครับ.\")

        logger.info(f\"[Audit] ตรวจสอบไฟล์ Config: {path} เสร็จสิ้น.\")

    except FileNotFoundError:
        logger.error(f\"[Audit] ไม่พบไฟล์ Config ที่: {path}\")
        click.echo(f\"ไม่เจอไฟล์ Config ที่ {path} ครับ.\")
    except Exception as e:
        logger.critical(f\"[Audit] เกิดข้อผิดพลาดร้ายแรงขณะตรวจสอบไฟล์ {path}: {e}\")
        click.echo(f\"เกิดข้อผิดพลาด: {e}\")

if __name__ == '__main__':
    cli()

ลอง Save โค้ดนี้ แล้วสั่งรันใน Terminal แบบนี้นะครับ:

python main.py check-config

หรือจะระบุ Path ด้วย:

python main.py check-config --path ./my_app_config.cfg

3. เพิ่มระบบ Logging ให้ละเอียดขึ้น

เห็นไหมครับ ว่าผมฝัง logger.info, logger.warning, logger.error เข้าไปในโค้ดของเราแล้ว ทีนี้ไม่ว่า CLI ของเราจะทำอะไร มันก็จะถูกบันทึกไว้ในไฟล์ compliance_audit.log ที่เราตั้งค่าไว้เลยนะครับ พร้อมบอกเวลาด้วย ทำให้ง่ายต่อการตรวจสอบมากๆ ครับ

ลองสร้างไฟล์ config.txt หรือ my_app_config.cfg แล้วลองใส่ข้อความ "secure_setting=true" หรือไม่ใส่ดูนะครับ แล้วรัน CLI ของเราดู

ตัวอย่างไฟล์ config.txt (แบบผ่าน):

# config.txt
app_name=MySecureApp
version=1.0
secure_setting=true

ตัวอย่างไฟล์ config.txt (แบบไม่ผ่าน):

# config.txt
app_name=MyOtherApp
version=1.0
debug_mode=enabled

จากนั้นเราก็ไปดูในไฟล์ compliance_audit.log ได้เลยนะครับ จะเห็น Log ที่ละเอียด บอกว่าใครรัน (ถ้าเราเพิ่มข้อมูลผู้ใช้เข้าไปนะ), ทำอะไร, ผลเป็นยังไงบ้าง ครบเลยครับ แบบนี้ก็ช่วยเรื่อง Compliance ที่ต้องมีหลักฐานการตรวจสอบได้ดีมากๆ เลยครับ

4. ทำไม Logging ถึงสำคัญกับ Compliance?

การมี Log ที่ดี ไม่ได้แค่ช่วย Debug นะครับ แต่ยังเป็นเหมือน \"หลักฐาน\" สำคัญที่เราสามารถเอาไปใช้:

  • พิสูจน์ได้ว่าเราทำตามกฏ: เช่น มีกฏบอกว่า Config ต้องมีการตั้งค่า A, B, C เราก็ใช้ CLI ตัวนี้เช็คแล้วบันทึกผลได้เลยครับ
  • ตรวจสอบย้อนหลัง: ถ้ามีปัญหาอะไรเกิดขึ้น หรือมีคนมาบอกว่า Config ไม่ถูกต้อง เราก็ย้อนดู Log ได้ว่าตอนนั้นมันเกิดอะไรขึ้น ใครเป็นคนรันการตรวจสอบครั้งล่าสุด
  • แจ้งเตือนความผิดปกติ: ถ้าเราเห็น Warning/Error บ่อยๆ ใน Log ก็แปลว่าระบบของเราอาจจะมีช่องโหว่ หรือไม่ตรงตามมาตรฐานนะครับ

ผมว่าเทคนิคนี้มันง่ายและใช้ได้จริงมากๆ เลยนะครับ ลองเอาไปปรับใช้กับโปรเจกต์ของเพื่อนๆ ดูได้เลยครับ

cii3.net

Read more

เจาะลึก UEFA Champions League: สุดยอดความตื่นเต้นที่แฟนบอลทั่วโลกรอคอย

เจาะลึก UEFA Champions League: สุดยอดความตื่นเต้นที่แฟนบอลทั่วโลกรอคอย

เจาะลึก UEFA Champions League การแข่งขันระดับโลกที่แฟนบอลรอคอย พร้อมติดตามข่าวสารรอบโลกและการถ่ายทอดสดสุดพิเศษ ไม่พลาดทุกความมันส์!

By ทีมงาน devdog
Google อัปเกรด Chrome ครั้งใหญ่ เพิ่มฟีเจอร์ "Skills" ให้ AI จำคำสั่งโปรดของคุณ

Google อัปเกรด Chrome ครั้งใหญ่ เพิ่มฟีเจอร์ "Skills" ให้ AI จำคำสั่งโปรดของคุณ

อัปเกรด Chrome ด้วยฟีเจอร์ Skills ใหม่ ให้ AI จดจำและเรียกใช้คำสั่งโปรดของคุณได้ทันที ไม่ต้องพิมพ์ซ้ำ พร้อมเชื่อมต่อ Gemini ทั่วระบบ

By ทีมงาน devdog
CARTIER Santos-Dumont โฉมใหม่: เมื่อออบซิเดียนผสานตำนานนักบิน สู่ความงามเหนือกาลเวลา

CARTIER Santos-Dumont โฉมใหม่: เมื่อออบซิเดียนผสานตำนานนักบิน สู่ความงามเหนือกาลเวลา

คาร์เทียร์เปิดตัว Santos-Dumont หน้าปัดออบซิเดียน หินภูเขาไฟธรรมชาติผสานดีไซน์นักบินระดับตำนาน สะท้อนงานฝีมือร่วมสมัยและความหรูหรา

By ทีมงาน devdog
iPhone Fold: เดิมพันครั้งใหญ่ของ Apple สู่ Top 3 ตลาดจอพับปี 2026

iPhone Fold: เดิมพันครั้งใหญ่ของ Apple สู่ Top 3 ตลาดจอพับปี 2026

คาดการณ์ iPhone Fold/Ultra อาจพา Apple ขึ้นแท่นผู้นำตลาดสมาร์ตโฟนจอพับภายในปี 2026 ด้วยส่วนแบ่ง 19.3% เจาะลึกดีไซน์ เทคโนโลยี และราคา Super Premium.

By ทีมงาน devdog