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

ไฮไลท์บอลโลก 2026: มหากาพย์ 48 ทีม เปิดฉากความตื่นเต้นที่คุณไม่ควรพลาด!

ไฮไลท์บอลโลก 2026: มหากาพย์ 48 ทีม เปิดฉากความตื่นเต้นที่คุณไม่ควรพลาด!

เกาะติดไฮไลท์บอลโลก 2026 ตั้งแต่นัดเปิดสนาม! สรุปผลการแข่งขันสุดเซอร์ไพรส์, ช่องทางดูบอลสดในไทยทั้งฟรีและพรีเมียม, โปรแกรมสำคัญ และทุกสิ่งที่ควรรู้.

By ทีมงาน devdog
ตารางคะแนนบอลโลก: ทุกแต้มมีความหมาย และปาฏิหาริย์ที่สั่นสะเทือนบัลลังก์

ตารางคะแนนบอลโลก: ทุกแต้มมีความหมาย และปาฏิหาริย์ที่สั่นสะเทือนบัลลังก์

เจาะลึกความสำคัญของตารางคะแนนบอลโลก พร้อมเรื่องราวสุดประทับใจของโวซินญา ผู้รักษาประตูเคปเวิร์ดที่สร้างปาฏิหาริย์หยุดสเปนในฟุตบอลโลก 2026.

By ทีมงาน devdog
ประธานเจ้าหน้าที่ฝ่ายกฎหมาย Take-Two ขายหุ้นมูลค่า 950,515 ดอลลาร์: สัญญาณอะไรที่นักลงทุนควรรู้?

ประธานเจ้าหน้าที่ฝ่ายกฎหมาย Take-Two ขายหุ้นมูลค่า 950,515 ดอลลาร์: สัญญาณอะไรที่นักลงทุนควรรู้?

ประธานเจ้าหน้าที่ฝ่ายกฎหมาย Take-Two ขายหุ้นเกือบ $1 ล้าน ท่ามกลางข่าวดี GTA 6 และรายได้คาดการณ์ $8 พันล้าน นักลงทุนควรรู้อะไร?

By ทีมงาน devdog