You probably have a line like
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
in your AssemblyInfo.cs.
That will initialise log4net and create your (null) logfile when the first log4net dll access takes place, which in your example is when it executes the line
private static ILog logger = LogManager.GetLogger(typeof(Program));
This will happen before the Main method is called and before your Logfile property is set.