Move to folder

This commit is contained in:
2025-01-06 14:44:35 -05:00
parent 579899cc62
commit 70422c61e6

115
PS-Logger/PS-Logger.psm1 Normal file
View File

@@ -0,0 +1,115 @@
# Define log levels
$script:LogLevels = @{
Debug = 0
Info = 1
Status = 2
Warning = 3
Success = 4
Error = 5
}
$script:CurrentLogLevel = $LogLevels.Info # Default level
function Set-LogLevel {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[ValidateSet('Debug', 'Info', 'Status', 'Warning', 'Success', 'Error')]
[string]$Level
)
$script:CurrentLogLevel = $script:LogLevels[$Level]
Write-LogMessage -Message "Log level set to: $Level" -Level Info
}
function Write-LogMessage {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[string]$Message,
[Parameter(Mandatory = $false)]
[ValidateSet('Info', 'Warning', 'Error', 'Success', 'Status', 'Debug')]
[string]$Level = 'Info',
[Parameter(Mandatory = $false)]
[string]$LogPath = $script:logPath,
[Parameter(Mandatory = $false)]
[switch]$NoConsole
)
# Only process if message level is >= current log level
if ($script:LogLevels[$Level] -ge $script:CurrentLogLevel) {
$ColorMap = @{
'Info' = 'Cyan'
'Warning' = 'Yellow'
'Error' = 'Red'
'Success' = 'Green'
'Status' = 'Magenta'
'Debug' = 'DarkMagenta'
}
$TimeStamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$LogEntry = "[$TimeStamp] [$Level] $Message"
# Write to log file if logging is enabled
if ($global:loggingEnabled) {
try {
Add-Content -Path $LogPath -Value $LogEntry -ErrorAction Stop
}
catch {
Write-Warning "Failed to write to log file: $_"
}
}
# Write to console unless suppressed
if (-not $NoConsole) {
$Color = $ColorMap[$Level]
Write-Host -ForegroundColor $Color $LogEntry
}
}
}
function Initialize-Logging {
[CmdletBinding()]
param(
[Parameter(Mandatory = $false)]
[string]$LogPath = "$env:TEMP\PremierOne_Install_$(Get-Date -Format 'yyyyMMdd_HHmmss').log",
[Parameter(Mandatory = $false)]
[switch]$Force,
[Parameter(Mandatory = $false)]
[ValidateSet('Debug', 'Info', 'Status', 'Warning', 'Success', 'Error')]
[string]$Level = 'Info'
)
$global:loggingEnabled = $true
Set-LogLevel -Level $Level
$script:logPath = $LogPath
if ($Force -and (Test-Path $LogPath)) {
Remove-Item -Path $LogPath -Force
}
try {
$LogHeader = "=== PremierOne Installation Log Started at $(Get-Date) ==="
Add-Content -Path $LogPath -Value $LogHeader -ErrorAction Stop
Write-LogMessage -Message "Logging initialized" -Level Info
}
catch {
Write-Warning "Failed to initialize logging: $_"
$global:loggingEnabled = $false
}
}
function Stop-Logging {
if ($global:loggingEnabled) {
Write-LogMessage -Message "=== Logging stopped at $(Get-Date) ===" -Level Info
$global:loggingEnabled = $false
}
}
Export-ModuleMember -Function Set-LogLevel, Write-LogMessage, Initialize-Logging, Stop-Logging