-1
submitted 1 year ago by Efwis@lemmy.zip to c/linuxscripts@lemmy.zip

This is a database script i made to trigger when database events trigger a database lockup.

# Make sure to change your database info and what instance of DB you are using (i.e. sqlite3, mysql, postgres etc...)
# This script will rotate for a total of 5 logs so you can compare previous errors with current one without taking unnecessary space

# There's no strict requirement to place it in the root directory of the server, but you have some options for where to put it:

# Root Directory: Placing the script in the root directory could work, but it's generally not recommended to clutter the root directory
# with scripts. It's better to create a specific directory for your application and put the script there.

# Custom Directory: Create a specific directory for your application, and place the script there. 
# For example, you could create a directory called "my_app" or "database_error_logger" and place the script in that directory.

# Scripts Directory: Some servers have a designated directory for executable scripts. 
# You might check if your server has a "scripts" directory where you can place your script.

# Regardless of the location, it's essential to consider file permissions. 
# Ensure that the script has the necessary permissions to execute. You may need to use the chmod command to set the appropriate 
# permissions, depending on your server's configuration.

# Lastly, consider setting up a virtual environment for your Python script to isolate dependencies and avoid conflicts with other 
# applications on the server. This can help ensure that the required Python libraries are installed locally for your script
# without interfering with system-wide packages.    

# This script was created by Edward Freeman and is covered under GPL V3. You can modify this script as you need
# However, you must retain this GPL V3 standard, and leave credit where credit is due to the original author.

import logging
from logging.handlers import RotatingFileHandler
import sqlite3 #Make sure you change this to the correct Database provider (sqlite3, mysql, postgres etc..)
import sys

# Configure logging with rotating file handler
log_file = 'database_errors.log'
log_handler = RotatingFileHandler(log_file, maxBytes=1024 * 1024, backupCount=5)
log_formatter = logging.Formatter('%(asctime)s - %(levelname)s: %(message)s')
log_handler.setFormatter(log_formatter)
logger = logging.getLogger('DatabaseErrorLogger')
logger.setLevel(logging.ERROR)
logger.addHandler(log_handler)

def perform_database_operation():
    try:
        # Replace the following line with your actual database connection and query
        connection = sqlite3.connect('your_database.db')
        cursor = connection.cursor()

        # Replace the following line with your actual database operation
        cursor.execute('SELECT * FROM your_table;')

        # Don't forget to commit the changes if you are performing write operations
        connection.commit()

        connection.close()
    except Exception as e:
        # Log the error with the traceback using the logger
        logger.exception("Error occurred while performing the database operation.")
        raise  # Raising the error again allows the script to terminate or handle it at a higher level if needed

def custom_exception_handler(exctype, value, traceback):
    # Log uncaught exceptions using the logger
    logger.exception("Uncaught exception occurred.", exc_info=(exctype, value, traceback))

# Set the custom exception handler for uncaught exceptions
sys.excepthook = custom_exception_handler

# Call the function to perform the database operation
try:
    perform_database_operation()
except Exception as e:
    print("Error occurred during the database operation:", str(e))
top 2 comments
sorted by: hot top controversial new old
[-] AapoL@sopuli.xyz 1 points 1 year ago

You probably want to upload this to github and then share around. Just copypasting the code is a bit clunky. Cool stuff though!

[-] Efwis@lemmy.zip 2 points 1 year ago

This has since been uploaded to my GitHub repo

https://github.com/efwis/scripts

Still working on other scripts I plan to upload

this post was submitted on 29 Jul 2023
-1 points (40.0% liked)

Linux Troubleshooting and scripts

362 readers
1 users here now

this is a community for sharing your scripts that help when working with Linux as well a general troubleshooting.

Rules

Feel free to ask any kind of support questions, as we grow more succinct answers will be available. Let's make this community grow.

We are important to one another, not only in the linux world but also in the fediverse as a whole. Feel free to reach out to me with questions or concerns, as we grow bigger I will look into adding mods. (This section will be updated as needed.)

founded 1 year ago
MODERATORS