
“You cannot sign in due to a technical issue. Contact your system administrator.”
Business Central
Terrific. This is in a local Docker container, so I am the system administrator. Give me a second while I contact myself…
…nope, myself didn’t know what the problem was either.
It could be that the license has expired, maybe there is something wrong with the tenant, the service tier hasn’t been able to start, who knows? You should probably start by looking for errors in the event log of the container.
Maybe I’m missing a trick and there is an easier way to do this(?) but I look through the event log with PowerShell. You can run this command inside the container:
Get-EventLog Application -EntryType Error
That will return all the errors that have been logged in the Application log. Two problems though:
- The list might be massive
- You can’t see the full text of the messages
You can add the Newest parameter to specify the number of most recent messages that you want to return. Then you probably want to write the full text of the message so that you can actually read it.
Get-EventLog Application -EntryType Error -Newest 1 | % {$_.Message}
Cool – although you still need to open a PowerShell prompt inside the container to run those commands. It would be nice if we didn’t need to do that. We can use docker exec to run a command against a local container from the outside.
docker exec [container name] powershell 'Get-EventLog Application -EntryType Error -Newest 1 | % {$_.Message}'
Now we’re getting somewhere. But of course, you don’t want to be typing all that each time. I’ve declared a PowerShell function in my profile file (run code $profile in a PowerShell prompt to open the profile file in VS Code).
function Get-ContainerErrors {
param(
[Parameter(Mandatory = $true)]
[string]$ContainerName,
[Parameter(Mandatory = $false)]
[int]$Newest = 1
)
docker exec $ContainerName powershell ("Get-EventLog Application -EntryType Error -Newest $Newest" + ' | % {$_.Message;''**********''}')
}
Declaring it in the profile file means that the function will always be available in a PowerShell prompt. The container name parameter must be supplied and optionally I can ask for more than just the latest one error. The string of asterisks is just to indicate where one log message ends and another begins.
Get-BcContainerEventLog
LikeLike
Thanks mate 👍 All the same I’d argue there is something elegant about showing the results in the terminal.
I know you’re nothing if not elegant 😉
LikeLike