derek-thomas's picture
derek-thomas HF staff
Updating for better logging
f3e3a3c
raw
history blame
1.47 kB
from io import StringIO
from pathlib import Path
from bs4 import BeautifulSoup
from rich.console import Console
from rich.syntax import Syntax
proj_dir = Path(__file__).parents[1]
def log_file_to_html_string():
log_file = proj_dir / "mylog.log"
num_lines_visualize = 50
with open(log_file, "rt") as f:
# Seek to the end of the file minus 300 lines
# Read the last 300 lines of the file
lines = f.readlines()
lines = lines[-num_lines_visualize:]
# Syntax-highlight the last 300 lines of the file using the Python lexer and Monokai style
output = "".join(lines)
syntax = Syntax(output, "python", theme="monokai", word_wrap=True)
console = Console(record=True, width=150, style="#272822", file=StringIO())
console.print(syntax)
html_content = console.export_html(inline_styles=True)
# Parse the HTML content using BeautifulSoup
soup = BeautifulSoup(html_content, 'lxml')
# Modify the <pre> tag
pre_tag = soup.pre
pre_tag['class'] = 'scrollable'
del pre_tag['style']
# Add your custom styles and the .scrollable CSS to the <style> tag
style_tag = soup.style
style_content = """
pre, code {
background-color: #272822;
}
.scrollable {
font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace;
height: 500px;
overflow: auto;
}
"""
style_tag.append(style_content)
return soup.prettify()