SharpDevelop のファイルテンプレートをカスタマイズする

先日書いたLog4Net.Config.Xmlファイルですが、SharpDevelop から一発で追加できるようにしたい！

* [Log4Net を利用してログを記録する #c# #Log4Net - Qiita](http://qiita.com/items/2b86c4e8d5afd5c2fb39)

VisualStudio ではよく使うファイルをテンプレートとして保存することができるのに、SharpDevelop にはメニューにすらない！
SharpDevelop でもでプロジェクトテンプレートやファイルテンプレートをカスタマイズしたい！

というわけで、調べてみました。

プロジェクトテンプレートやファイルテンプレートが保存されている場所は、
[SharpDevelop をインストールしたディレクトリ]～data\templates みたい。

うちの環境では `C:\Program Files\SharpDevelop\4.2\data\templates` 

そこにある他のテンプレート(.xpt)ファイルを真似て、`C:\Program Files\SharpDevelop\4.2\data\templates\file\Misc`の下に、以下のファイルを追加してみました。

```xml:Log4NetConfigFile.xft
<?xml version="1.0"?>
<Template author="rohinomiya" version="1.0">
	<Config
		  name		 = "Log4Net.Config.xml"
		  icon		 = "Icons.32x32.XMLFileIcon"
		  category	 = "${res:Templates.File.Categories.Misc}"
		  defaultname= "Log4Net.Config.xml"
		  language	 = "XML"/>
	 
	<Description>Log4Net Configuration XML File</Description>

	<Files>
		<File name="${FullName}" language="XML"><![CDATA[<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<log4net>
		
		<!-- Normal Log / Append File -->
		<appender name="InfoLogDailyAppender" type="log4net.Appender.FileAppender">
			<File value="${APPDATA}\\Rohinomiya\\SampleLog4Net\\Logs\\Info.log" />
	
			<AppendToFile value="true" />

			<filter type="log4net.Filter.LevelRangeFilter">
				<param name="LevelMax" value="WARN" />
				<param name="LevelMin" value="INFO" />
			</filter>

			<layout type="log4net.Layout.PatternLayout">
				<ConversionPattern value="%date [%thread] [%-5level] %logger - %message%n" />
			</layout>
		</appender>
		
		<!-- Error Log / Rolling File -->
		<appender name="ErrorLogDailyAppender" type="log4net.Appender.RollingFileAppender">
			<!-- Daily File -->
			<param name="File" value="${APPDATA}\\Rohinomiya\\SampleLog4Net\\Logs\\Error_" />
			<param name="DatePattern" value='yyyyMMdd".log"' />
			<param name="RollingStyle" value="date" />
			<param name="StaticLogFileName" value="false" />

			<param name="AppendToFile" value="true" />

			<filter type="log4net.Filter.LevelRangeFilter">
				<param name="LevelMax" value="FATAL" />
				<param name="LevelMin" value="ERROR" />
			</filter>

			<param name="MaximumFileSize" value="10MB" />
			<param name="MaxSizeRollBackups" value="10" />
			
			<layout type="log4net.Layout.PatternLayout">
				<ConversionPattern value="%date [%thread] [%-5level] %logger %file(%line) %class %method - %message%n" />
			</layout>
		</appender>
		
		<!-- Debug Log/ Rolling File -->
		<appender name="DebugLogDailyAppender" type="log4net.Appender.RollingFileAppender">

			<!-- Daily File -->
			<param name="File" value="${APPDATA}\\Rohinomiya\\SampleLog4Net\\Logs\\Trace_" />
			<param name="DatePattern" value='yyyyMMdd".log"' />
			<param name="RollingStyle" value="date" />
			<param name="StaticLogFileName" value="false" />

			<param name="AppendToFile" value="true" />

			<filter type="log4net.Filter.LevelRangeFilter">
				<!-- <param name="LevelMax" value="FATAL" /> -->
				<param name="LevelMin" value="TRACE" />
			</filter>

			<param name="MaximumFileSize" value="10MB" />
			<param name="MaxSizeRollBackups" value="10" />

			<layout type="log4net.Layout.PatternLayout">
				<ConversionPattern value="%date [%thread] [%-5level] %logger %file(%line) %class %method - %message%n" />
			</layout>
		</appender>
				
		<root>
			<!-- record level -->
			<level value="TRACE" />
			<!-- use Appender -->
			<appender-ref ref="InfoLogDailyAppender" />
			<appender-ref ref="ErrorLogDailyAppender" />
			<appender-ref ref="DebugLogDailyAppender" />
		</root>
	
	</log4net>
</configuration>
]]>
		</File>
	</Files>
	
	<AdditionalOptions/>
</Template>
```


そうしたら、新規ファイル追加メニューに表示されるようになりました！

![](https://lh6.googleusercontent.com/-zIKCk6WPraQ/UD6gmOUXNVI/AAAAAAAAEmg/nNzIyU6Rjlg/s800/2012-08-30_07h56_11.png)

![](https://lh5.googleusercontent.com/-6AOHBy3Nxhc/UD6gov64drI/AAAAAAAAEm0/gYNC07KKuG4/s800/2012-08-30_07h55_46.png)