{"id":641,"date":"2025-10-26T15:22:25","date_gmt":"2025-10-26T14:22:25","guid":{"rendered":"https:\/\/www.silverice.it\/IpercubeTechWP1\/?page_id=641"},"modified":"2025-11-05T09:23:04","modified_gmt":"2025-11-05T08:23:04","slug":"openlog","status":"publish","type":"page","link":"https:\/\/www.silverice.it\/IpercubeTechWP1\/ipercube-utilities\/logging-functions\/openlog\/","title":{"rendered":"Open Log"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Initializes and writes the header for a log file, optionally preserving any existing content.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This function generates a log file with a timestamped header containing application metadata such as product name, version, platform, framework, and copyright. If the file already exists and&nbsp;<strong>PreserveLogFile<\/strong>&nbsp;is&nbsp;<strong>False<\/strong>&nbsp;, it will be deleted. The full path is constructed if not explicitly provided, and the file name is remembered for use by subsequent log operations.<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:75%\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column page-snippet is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Geist-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-Geist-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">VB<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>    Public Sub OpenLog(Optional LogFileName As String = \"\", \n                       Optional PreserveLogFile As Boolean = False, \n                       Optional callingAssembly As Assembly = Nothing)\n\n        Dim asm As Assembly\n\n        If callingAssembly Is Nothing Then\n            asm = Assembly.GetEntryAssembly()\n            If asm Is Nothing Then asm = Assembly.GetExecutingAssembly\n        Else\n            asm = callingAssembly\n        End If\n\n        Static DefaultLogFileName As String = String.Empty\n\n        'Set Default file name\n        If DefaultLogFileName = String.Empty Then\n            If Not asm Is Nothing Then\n                DefaultLogFileName = CType(asm.GetCustomAttribute(GetType(AssemblyProductAttribute)), \n                                     AssemblyProductAttribute).Product + \".log\"\n            Else\n                DefaultLogFileName = $\"Log file created by {My.Application.Info.ProductName}.log\"\n            End If\n            DefaultLogFileName = Path.Combine(Environment.ExpandEnvironmentVariables(\"%HOMEDRIVE%\"), \n                                 Environment.ExpandEnvironmentVariables(\"%HOMEPATH%\"), LogFileName)\n        End If\n\n        If String.IsNullOrEmpty(LogFileName) Then LogFileName = DefaultLogFileName\n\n        Dim szRowHeader As String = CStr(Now) &amp; \"   \"\n        Dim szMessage As String = String.Empty\n\n        'Delete old Log file\n        If Not PreserveLogFile Then\n            Try : Kill(LogFileName) : Catch ex As Exception : End Try\n        End If\n\n        'Write Header\n        If Not File.Exists(LogFileName) Then\n\n            File.AppendAllText(LogFileName, szRowHeader &amp; LineSep &amp; Environment.NewLine)\n            Console.WriteLine(szRowHeader &amp; LineSep)\n\n            If Not asm Is Nothing Then\n\n                Dim assemblyInfo = GetAssemblyInfo(asm)\n\n                szMessage = $\"{assemblyInfo.Product}  -  {assemblyInfo.Version}  -  \" + \n                            $\"{assemblyInfo.Platform}  {assemblyInfo.Framework}\"\n                File.AppendAllText(LogFileName, szRowHeader &amp; szMessage &amp; Environment.NewLine)\n                Console.WriteLine(szRowHeader &amp; szMessage)\n\n                File.AppendAllText(LogFileName, szRowHeader &amp; LineSep &amp; Environment.NewLine)\n                Console.WriteLine(szRowHeader &amp; LineSep)\n\n                Dim szCurrentYear As String = CStr(DateTime.Now.Year)\n                Dim copyright As String = assemblyInfo.Copyright\n\n                copyright = If(copyright.Contains(\"{0}\"), String.Format(copyright, szCurrentYear), copyright)\n\n                Dim matches = Regex.Matches(copyright, Regex.Escape(szCurrentYear), RegexOptions.IgnoreCase)\n                If matches.Count > 1 Then\n                    copyright = copyright.Replace($\"{szCurrentYear}-{szCurrentYear}\", szCurrentYear)\n                End If\n\n                File.AppendAllText(LogFileName, szRowHeader &amp; copyright &amp; Environment.NewLine)\n                Console.WriteLine(szRowHeader &amp; assemblyInfo.Copyright)\n            Else\n                szMessage = \"Unable to get information from EntryAssembly\"\n                File.AppendAllText(LogFileName, szRowHeader &amp; szMessage &amp; Environment.NewLine)\n                Console.WriteLine(szRowHeader &amp; szMessage)\n            End If\n\n            File.AppendAllText(LogFileName, szRowHeader &amp; LineSep &amp; Environment.NewLine)\n            Console.WriteLine(szRowHeader &amp; LineSep)\n        End If\n\n        'Save the Log file name for suseqeunt call to WriteLog\n        WriteLog(JustRememberTheLogFileName, LogFileName)\n\n    End Sub\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">Public Sub <\/span><span style=\"color: #DCDCAA\">OpenLog<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">Optional<\/span><span style=\"color: #D4D4D4\"> LogFileName As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                       Optional PreserveLogFile As <\/span><span style=\"color: #4EC9B0\">Boolean<\/span><span style=\"color: #D4D4D4\"> =<\/span><span style=\"color: #569CD6\"> False<\/span><span style=\"color: #D4D4D4\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                       Optional callingAssembly As <\/span><span style=\"color: #4EC9B0\">Assembly<\/span><span style=\"color: #D4D4D4\"> =<\/span><span style=\"color: #569CD6\"> Nothing<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> asm <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">Assembly<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> callingAssembly Is<\/span><span style=\"color: #569CD6\"> Nothing<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">Then<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #9CDCFE\">asm<\/span><span style=\"color: #D4D4D4\"> = Assembly.<\/span><span style=\"color: #DCDCAA\">GetEntryAssembly<\/span><span style=\"color: #D4D4D4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> asm Is<\/span><span style=\"color: #569CD6\"> Nothing<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">Then<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">asm<\/span><span style=\"color: #D4D4D4\"> = Assembly.GetExecutingAssembly<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">Else<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #9CDCFE\">asm<\/span><span style=\"color: #D4D4D4\"> =<\/span><span style=\"color: #9CDCFE\"> callingAssembly<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">End If<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        Static DefaultLogFileName As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">String<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #569CD6\">Empty<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\">&#39;Set Default file name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">DefaultLogFileName<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">String<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #569CD6\">Empty<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">Then<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> Not asm Is<\/span><span style=\"color: #569CD6\"> Nothing<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">Then<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #9CDCFE\">DefaultLogFileName<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">CType<\/span><span style=\"color: #D4D4D4\">(asm.<\/span><span style=\"color: #DCDCAA\">GetCustomAttribute<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">GetType<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">AssemblyProductAttribute<\/span><span style=\"color: #D4D4D4\">)), <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                                     <\/span><span style=\"color: #9CDCFE\">AssemblyProductAttribute<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #9CDCFE\">Product<\/span><span style=\"color: #D4D4D4\"> + <\/span><span style=\"color: #CE9178\">&quot;.log&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">Else<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #9CDCFE\">DefaultLogFileName<\/span><span style=\"color: #D4D4D4\"> = $<\/span><span style=\"color: #CE9178\">&quot;Log file created by {My.Application.Info.ProductName}.log&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">End If<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #9CDCFE\">DefaultLogFileName<\/span><span style=\"color: #D4D4D4\"> = Path.<\/span><span style=\"color: #DCDCAA\">Combine<\/span><span style=\"color: #D4D4D4\">(Environment.<\/span><span style=\"color: #DCDCAA\">ExpandEnvironmentVariables<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;%HOMEDRIVE%&quot;<\/span><span style=\"color: #D4D4D4\">), <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                                 Environment.<\/span><span style=\"color: #DCDCAA\">ExpandEnvironmentVariables<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;%HOMEPATH%&quot;<\/span><span style=\"color: #D4D4D4\">),<\/span><span style=\"color: #9CDCFE\"> LogFileName<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">End If<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">String<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">IsNullOrEmpty<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">LogFileName<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #C586C0\">Then<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">LogFileName<\/span><span style=\"color: #D4D4D4\"> =<\/span><span style=\"color: #9CDCFE\"> DefaultLogFileName<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> szRowHeader <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">CStr<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">Now<\/span><span style=\"color: #D4D4D4\">) &amp; <\/span><span style=\"color: #CE9178\">&quot;   &quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> szMessage <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">String<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #569CD6\">Empty<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\">&#39;Delete old Log file<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> Not PreserveLogFile <\/span><span style=\"color: #C586C0\">Then<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            Try : <\/span><span style=\"color: #DCDCAA\">Kill<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">LogFileName<\/span><span style=\"color: #D4D4D4\">) : Catch ex As <\/span><span style=\"color: #4EC9B0\">Exception<\/span><span style=\"color: #D4D4D4\"> : <\/span><span style=\"color: #DCDCAA\">End<\/span><span style=\"color: #D4D4D4\"> Try<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">End If<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\">&#39;Write Header<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> Not File.<\/span><span style=\"color: #DCDCAA\">Exists<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">LogFileName<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #C586C0\">Then<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            File.<\/span><span style=\"color: #DCDCAA\">AppendAllText<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">LogFileName<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> szRowHeader<\/span><span style=\"color: #D4D4D4\"> &amp;<\/span><span style=\"color: #9CDCFE\"> LineSep<\/span><span style=\"color: #D4D4D4\"> &amp; Environment.<\/span><span style=\"color: #9CDCFE\">NewLine<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            Console.<\/span><span style=\"color: #DCDCAA\">WriteLine<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">szRowHeader<\/span><span style=\"color: #D4D4D4\"> &amp;<\/span><span style=\"color: #9CDCFE\"> LineSep<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> Not asm Is<\/span><span style=\"color: #569CD6\"> Nothing<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">Then<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> assemblyInfo <\/span><span style=\"color: #D4D4D4\">= <\/span><span style=\"color: #DCDCAA\">GetAssemblyInfo<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">asm<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #9CDCFE\">szMessage<\/span><span style=\"color: #D4D4D4\"> = $<\/span><span style=\"color: #CE9178\">&quot;{assemblyInfo.Product}  -  {assemblyInfo.Version}  -  &quot;<\/span><span style=\"color: #D4D4D4\"> + <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                            $<\/span><span style=\"color: #CE9178\">&quot;{assemblyInfo.Platform}  {assemblyInfo.Framework}&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                File.<\/span><span style=\"color: #DCDCAA\">AppendAllText<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">LogFileName<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> szRowHeader<\/span><span style=\"color: #D4D4D4\"> &amp;<\/span><span style=\"color: #9CDCFE\"> szMessage<\/span><span style=\"color: #D4D4D4\"> &amp; Environment.<\/span><span style=\"color: #9CDCFE\">NewLine<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                Console.<\/span><span style=\"color: #DCDCAA\">WriteLine<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">szRowHeader<\/span><span style=\"color: #D4D4D4\"> &amp;<\/span><span style=\"color: #9CDCFE\"> szMessage<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                File.<\/span><span style=\"color: #DCDCAA\">AppendAllText<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">LogFileName<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> szRowHeader<\/span><span style=\"color: #D4D4D4\"> &amp;<\/span><span style=\"color: #9CDCFE\"> LineSep<\/span><span style=\"color: #D4D4D4\"> &amp; Environment.<\/span><span style=\"color: #9CDCFE\">NewLine<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                Console.<\/span><span style=\"color: #DCDCAA\">WriteLine<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">szRowHeader<\/span><span style=\"color: #D4D4D4\"> &amp;<\/span><span style=\"color: #9CDCFE\"> LineSep<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> szCurrentYear <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">CStr<\/span><span style=\"color: #D4D4D4\">(DateTime.<\/span><span style=\"color: #DCDCAA\">Now<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">Year<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> copyright <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\"> = assemblyInfo.Copyright<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #9CDCFE\">copyright<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\">(copyright.<\/span><span style=\"color: #DCDCAA\">Contains<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;{0}&quot;<\/span><span style=\"color: #D4D4D4\">), <\/span><span style=\"color: #DCDCAA\">String<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">Format<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">copyright<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> szCurrentYear<\/span><span style=\"color: #D4D4D4\">),<\/span><span style=\"color: #9CDCFE\"> copyright<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> matches <\/span><span style=\"color: #D4D4D4\">= <\/span><span style=\"color: #DCDCAA\">Regex<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">Matches<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">copyright<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #DCDCAA\">Regex<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">Escape<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">szCurrentYear<\/span><span style=\"color: #D4D4D4\">), RegexOptions.<\/span><span style=\"color: #9CDCFE\">IgnoreCase<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> matches.<\/span><span style=\"color: #9CDCFE\">Count<\/span><span style=\"color: #D4D4D4\"> &gt; <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">Then<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">copyright<\/span><span style=\"color: #D4D4D4\"> = copyright.<\/span><span style=\"color: #DCDCAA\">Replace<\/span><span style=\"color: #D4D4D4\">($<\/span><span style=\"color: #CE9178\">&quot;{szCurrentYear}-{szCurrentYear}&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> szCurrentYear<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #C586C0\">End If<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                File.<\/span><span style=\"color: #DCDCAA\">AppendAllText<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">LogFileName<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> szRowHeader<\/span><span style=\"color: #D4D4D4\"> &amp;<\/span><span style=\"color: #9CDCFE\"> copyright<\/span><span style=\"color: #D4D4D4\"> &amp; Environment.<\/span><span style=\"color: #9CDCFE\">NewLine<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                Console.<\/span><span style=\"color: #DCDCAA\">WriteLine<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">szRowHeader<\/span><span style=\"color: #D4D4D4\"> &amp; assemblyInfo.<\/span><span style=\"color: #9CDCFE\">Copyright<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">Else<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #9CDCFE\">szMessage<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&quot;Unable to get information from EntryAssembly&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                File.<\/span><span style=\"color: #DCDCAA\">AppendAllText<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">LogFileName<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> szRowHeader<\/span><span style=\"color: #D4D4D4\"> &amp;<\/span><span style=\"color: #9CDCFE\"> szMessage<\/span><span style=\"color: #D4D4D4\"> &amp; Environment.<\/span><span style=\"color: #9CDCFE\">NewLine<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                Console.<\/span><span style=\"color: #DCDCAA\">WriteLine<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">szRowHeader<\/span><span style=\"color: #D4D4D4\"> &amp;<\/span><span style=\"color: #9CDCFE\"> szMessage<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">End If<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            File.<\/span><span style=\"color: #DCDCAA\">AppendAllText<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">LogFileName<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> szRowHeader<\/span><span style=\"color: #D4D4D4\"> &amp;<\/span><span style=\"color: #9CDCFE\"> LineSep<\/span><span style=\"color: #D4D4D4\"> &amp; Environment.<\/span><span style=\"color: #9CDCFE\">NewLine<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            Console.<\/span><span style=\"color: #DCDCAA\">WriteLine<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">szRowHeader<\/span><span style=\"color: #D4D4D4\"> &amp;<\/span><span style=\"color: #9CDCFE\"> LineSep<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">End If<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\">&#39;Save the Log file name for suseqeunt call to WriteLog<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">WriteLog<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">JustRememberTheLogFileName<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #9CDCFE\"> LogFileName<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">End Sub<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Initializes and writes the header for a log file, optionally preserving any existing content. This function generates a log file with a timestamped header containing application metadata such as product name, version, platform, framework, and copyright. If the file already exists and&nbsp;PreserveLogFile&nbsp;is&nbsp;False&nbsp;, it will be deleted. The full path is constructed if not explicitly provided, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":635,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-641","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/pages\/641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/comments?post=641"}],"version-history":[{"count":6,"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/pages\/641\/revisions"}],"predecessor-version":[{"id":869,"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/pages\/641\/revisions\/869"}],"up":[{"embeddable":true,"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/pages\/635"}],"wp:attachment":[{"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/media?parent=641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}