我正在使用它RollingLogFileAppender
并且它工作得很好并且它正在滚动到新文件中.但是它在文件的最后添加了.1,.2等.所以我结束了.log.1
,.log.2
等于是每个文件在技术上有了新的扩展,资源管理器不知道,所以我不能只在文件上双击打开.
如何让滚动文件appender在文件扩展名之前插入该索引?
我想要的是
奖金将永远是当前文件.0.log
,这样他们总是在资源管理器中正确排序.
编辑:添加了我当前的配置设置
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<file value="App_Data\\Logs\\" />
<datePattern value="dd.MM.yyyy'.log'" />
<staticLogFileName value="false" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="5MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<logger name="File">
<level value="All" />
<appender-ref ref="RollingLogFileAppender" />
</logger>
</log4net>
Run Code Online (Sandbox Code Playgroud) 我试图弄清楚为什么当我创建一个脚本包引用我的主站点的应用程序文件夹下的IIS VirtualDirectory中的文件时,为什么它不会输出任何内容.
我发现这篇文章:
为什么ResolveBundleUrl不适用于自定义文件夹?(MVC Beta 4)
但是对于System.Web.Optimization的最新beta版本,它似乎不再有效.
.Net 4 WPF DataGrid C#MMVM
当DataGrid SelectionUnit为完整行时,wpf数据绑定和collectionview会通过视图的currentitem属性让我知道viewmodel中的主动选择项.这适用于只读网格,选择模式设置为fullrow.
现在我有一个可编辑的网格.因此,我设置了SelectionUnit = Cell,以便更容易找到一个单元格.现在,网格突然不再具有跟踪选择项目的能力.设置为单元格模式时,我甚至无法设置SelectedItem.所以现在viewmodel总是认为它在第一行.我可以在网格中处理SelectedCellsChanged以找出我所在的行,我无法让视图模型知道,因为网格的SelectedItem无法再设置!
我不明白为什么在单元格选择模式下网格仍然没有SelectedItem.
没有硬编码到我的网格中以将ItemSource转换为我的集合视图以从SelectedCellsChanged事件调用MoveCurrentTo,是否有任何其他MVVM真正的方法来保持视图的CurrentItem与网格同步?
或者,或者当我有一个可编辑的网格时,我更改网格样式以删除或减少行高亮效果.
我有一个asp.net mvc4.我有使用IIS虚拟目录在此应用程序中部署为子目录的模块,我需要引用这些模块中的文件.这些模块dll正在注册捆绑包.但捆绑包不会在html页面中生成任何内容.
从这篇文章中可以看出,它可能是单元测试-bicleconfig-in-mvc4,我看到内部捆绑包正在使用Server.MapPath.所以它似乎应该工作.
我连接了BundleTable.MapPathMethod,甚至自己调用了Server.MapPath,它正确地解析到了正确的物理目录.但它仍然不会在html页面中呈现任何内容.
然后就是这篇帖子,为什么做了解决方案,不为自定义文件夹工作,提到自定义文件夹的"AddDirectory"功能但是这个功能在最新的优化库中不再可用.
我也试过使用新的"IncludeDirectory"方法,但这也不起作用
ScriptBundle scriptBundle = new ScriptBundle("~/bundles/jquery");
scriptBundle.IncludeDirectory(basePath + "/Scripts/","jquery-1.*");
bundles.Add(scriptBundle);
Run Code Online (Sandbox Code Playgroud)
还有什么我可以尝试使这项工作?
12年8月27日
问题解答:基本上,System.Web.Optimization不适用于作为子IIS虚拟目录的Web URL.
问题是BundleResolver.GetBundleContents中的这些代码行
string mapPathMethod = this.MapPathMethod("~/");
if (!file.FullName.StartsWith(mapPathMethod, StringComparison.OrdinalIgnoreCase))
Run Code Online (Sandbox Code Playgroud)
这基本上假设捆绑的每个文件都位于主Web应用程序PHYSICAL文件夹下的PHYSICAL文件夹中.
IMO的问题在于,正在搜索要包含的文件的Web相对URL路径很早就被转换为物理路径,并且所有对用于获取这些物理文件的相对URL路径的引用都被丢弃了.
所以,为了看看我是否可以完成这项工作,我不得不将System.Web.Optimization反编译为裸代码,然后再重新编译,以便我可以"修复"它.第一步是将一个RelativePath属性添加到BundleItem,这是BundleItem的一个额外构造函数,用于传递源相对url路径以保留Web相对搜索目录文件夹的内容.然后我用循环替换上面的代码,然后基本上尝试重新匹配用BundleItem找到的文件,以便它们可以转换回有效的web url
foreach (BundleItem bundleItem in bundleFor.Items)
{
if (file.FullName.StartsWith(bundleItem.Path, StringComparison.OrdinalIgnoreCase)){
string str = file.FullName.Replace(bundleItem.Path,bundleItem.RelativePath);
str = str.Replace('\\', '/');
strs.Add(str);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我的捆绑包正在渲染.但请注意,我尚未测试此hack修复程序是否已发布或已进行优化或缩小.
我真的认为asp.net团队应该在IIS虚拟目录中制作System.Web.Optimizations支持文件.特别是现在VS2012支持IIS Express,最终使构建模块化Web应用程序变得更容易,文件通过IIS虚拟目录引用
.net asp.net-mvc-4 asp.net-optimization system.web.optimization
C#WPF - 我有一个自定义的可编辑数据网格,它使用我自己的继承自DataGridTextColumn的自定义列.在我的列类中,我重写了GenerateEditingElement,以便我可以自动设置MaxLength,CharacterCasing等内容.
问题是,当用户突出显示一个单元格,然后键入他们的第一个字符时,datagrid会自动进入editmode.所以我的GenerateEditingElement会触发,我可以设置文本框.不幸的是,这对于角色来说太晚了,而且TextCompositionEventArgs中已经有一个小写字母.后续类型字符是正确的情况.
列类PrepareCellForEdit是下一个触发的,它有TextCompositionEventArgs.但是,我似乎无法改变文字.我遇到了setter不可用的编译错误.(即使知识的智能帮助确实说得到并设置).
无论如何我可以通过编程方式将我的字符串放入文本框中吗?或者我如何在TextCompositionEventArgs中更改该文本?
在数据绑定发生时,如何忽略对控件的更改?我尝试挂钩各种事件,如gotfocus,textchanged和leavefocus,但如果控件已经有焦点并且用户"取消"他们的更改,当我重新加载记录和数据绑定接管时,textchanged认为用户仍然进行了更改,因为重点是控制.调用堆栈为空.是否有任何全局数据绑定事件,如数据绑定启动和数据绑定结束?我看到我在哪里解雇我的OnProperyChanged但在该调用中,数据绑定不会发生.看起来它正在"排队"并在某个其他点运行.
有一次,我将在我们的视图模型中挂钩属性更改事件,但这意味着我将无法检测到并且无法显示窗体被修改,直到用户离开控件.我知道,我知道,我可以更改所有绑定,以便在每次更改字符时立即进行绑定,但由于用户尚未完成输入值,因此会出现一些验证情况.
我真的很喜欢像TextChangedByUser这样的事件,它会触发用户是否使用了键,剪贴板,鼠标剪贴板,以及用户触发的任何内容.
我只是无法弄清楚如何区分用户更改和数据绑定更改.
.Net 4 WPF DataGrid MVVM
用户单击添加按钮触发视图模型上的命令。在 viewmodel 命令执行中,我将一个新对象添加到网格绑定到的视图模型的视图集合中。新行确实出现在我的网格中。但是,我还想将焦点发送到该新行中的第一个可编辑单元格。
我什至“欺骗”了 mvvm,在我的视图模型上添加了一个视图监听的事件,以了解何时关注新行。
我已经搜索过,但没有运气。当我遇到这个时,我充满希望:
这导致
http://social.msdn.microsoft.com/forums/en-US/wpf/thread/63974f4f-d9ee-45af-8499-42f29cbc22ae
但是其他人反映的问题却没有人回答,就是如何处理网格的虚拟化行为。新添加的行尚未创建。因此 GetCells 调用经常失败。如果需要 ScrollIntoView,那么失败的可能性就更大。
我已经吸引了大量事件,包括 LoadingRow 和 RequestBringIntoView ,但没有运气。根据我挂钩的事件,我设法能够获得对单元格的引用。但是后来我收到错误消息“在生成内容时无法调用 StartAt”。但是我检查了 ItemContainerGenerator 的状态,当我调用单元格的 BeginEdit 时它是 ContainersGenerated。