i creating loggers log messages text file. function deleteoldlogs() responsible delete logs on 14 days old. when run testmethod1(), receive error "the process cannot access file because being used process" there way avoid error?
// testclass
[testmethod] public void testmethod1() { loggerviewmodel lv = new loggerviewmodel(); lv.deleteoldlogs(); } // loggerviewmodel class.
[export] [partcreationpolicy(system.componentmodel.composition.creationpolicy.shared)] public class loggerviewmodel : viewmodelbase { public observablecollection<logitem> logitems { get; set; } public observablecollection<logitem> logitemcollection = new observablecollection<logitem>(); protected static readonly ilog log = logmanager.getlogger(typeof(loggerviewmodel)); private string dirpath = @"c:\logfolder"; [importingconstructor] public loggerviewmodel() { memoryappender memoryappender = new memoryappender(); basicconfigurator.configure(memoryappender); log(); var events = memoryappender.getevents(); foreach (loggingevent loggingevent in events) { logitem logitem = new logitem(loggingevent.timestamp, loggingevent.level, loggingevent.renderedmessage); logitemcollection.add(logitem); } logitems = logitemcollection; } public void log() { string stacktrace = environment.stacktrace; string[] array = stacktrace.split("\r\n".tochararray(), stringsplitoptions.removeemptyentries); foreach (string item in array) { log.debug(item); } } public void deleteoldlogs() { list<string> delpaths = new list<string>(); foreach(var file in directory.getfiles(dirpath)) { fileinfo info = new fileinfo(file); datetime filecreationdate = info.creationtime; datetime twoweeksago = datetime.today.adddays(-14); if (filecreationdate < twoweeksago) { string delpath = dirpath + @"\" + info.name; delpaths.add(delpath); } } foreach(string dp in delpaths) { filesystem.deletefile(dp, uioption.onlyerrordialogs, recycleoption.sendtorecyclebin); } } }
Comments
Post a Comment