ページ「オンプレミス」と「Xamarin.MacでNLogを使う」の間の差分

提供: MonoBook
(ページ間の差分)
ナビゲーションに移動 検索に移動
imported>GamerBook
(ページの作成:「'''オンプレミス'''(英語:on premises)とは、主にサーバーなどのコンピューターを自社に設置し、またサーバーの上...」)
 
imported>Administrator
(Administrator がページ「Xamarin.Mac/NLogを使う」を「Xamarin.MacでNLogを使う」に移動しました)
 
1行目: 1行目:
'''オンプレミス'''(英語:on premises)とは、主に[[サーバー]]などの[[コンピューター]]を自社に設置し、また[[サーバー]]の上で動く[[サービス]]を自社で運用することをいう。
+
[[Xamarin.Mac]]でも[[NLog]]を使えると捗る。
  
== 概要 ==
+
==実装1==
英語におけるオンプレミスの意味は辞書によると「構内で」「店内で」といった意味であり、いわゆる古くから一般的な自分で[[サーバー]]を買ってきて、自分で設定して、自分で運用形態のことである。つまり[[自宅鯖]]もオンプレミスである。なお一部の文献のように小難しく説明すると「自社で用意した[[ICTリソース]]を利用して、[[ソフトウェア]]を導入・開発して運用する形態のこと」などとなる。
+
[[Xamarin.Mac]]でも[[NLog]]はなんら問題なく使用できる。[[NuGet]]から一発[[インストール]]である。試してはいないが[[MonoMac]]でも同じだと思う。
  
かつて自社設置や自社運用、自社開発などは全て「[[インハウス]]」という言葉で片付けられていたが、近年では主に[[サーバー]]およびその上で動く[[サービス]]の自社運用に関しては「オンプレミス」という言葉の方が一般的となっている。[[ソフトウェア]]の開発などに関しては今なお「[[インハウス]]」が用いられる傾向が多く、運用などに関しては「オンプレミス」が用いられることが多い。
+
ただし[[ファイル]]に出力する場合に注意が必要で、[[Mac OS X]]ではあらゆる[[ファイル]][[アプリ]]の外部に保存する必要があるため、NLog.configファイルの設定例でよく見かける「basedir変数」以下に書き込む設定は使えない。
  
これは[[クラウドコンピューティング]]を売りたい人たちが、[[クラウドコンピューティング]]の対義語としてオンプレミスという用語を大流行させられたことによるものだと言われている。これらの用語は主に「クラウドとオンプレミスのどちらが優れているか?」という適材適所という言葉を知らないかのような不毛な議論の際に多用される。なおデータ消失事件などを経験した識者たちの見解では「理想論でいえばその両方で[[冗長化]]するのが正解だ」と言われてる。
+
===ファイルに出力するNLog.configの設定例===
 +
そこで以下の例では[[Mac OS X]]では定番の「~/Library/Logs/」以下に出力してみた。
  
近年ではオンプレミスな運用形態のうち大小問わず何らかの[[仮想化]]技術を用いているものを「[[プライベートクラウド]]」などと新たな造語が作られ宣伝されている。いわゆる[[リネーム商法]]である。
+
<source lang="xml">
 +
<?xml version="1.0" encoding="utf-8" ?>
 +
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
 +
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 +
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
 +
      autoReload="true"
 +
      throwExceptions="false"
 +
      internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log" >
  
[[オサレ]]さんであれば絶対に覚えておく必要がある用語である。
+
  <variable name="appname" value="monobook"/>
  
== 関連項目 ==
+
  <targets>
* [[クラウドコンピューティング]]
+
    <target xsi:type="File" name="logfile"
* [[インハウス]]
+
    fileName="${specialfolder:folder=MyDocuments}/Library/Logs/${appname}/${shortdate}.log"
* [[ICTリソース]]
+
        layout="${longdate} ${uppercase:${level}} ${message}" />
  
== 参考文献 ==
+
    <target xsi:type="Console" name="console" />
 +
 
 +
  </targets>
 +
 
 +
  <rules>
 +
    <logger name="*" minlevel="Trace" writeTo="logfile" />
 +
    <logger name="*" minlevel="Info"  writeTo="console" />
 +
  </rules>
 +
</nlog>
 +
</source>
 +
NLogに設定するパスは[[絶対パス]]なので、ホームディレクトリのパスの取得は「[[MonoMac/特殊ディレクトリのパスを取得する]]」を用いてMyDocumentsを指定することで取得した。
 +
 
 +
また、NLog.config中でアプリ名を動的に取得する方法がわからなかったので、この例では自前でappname変数を用意している。
 +
 
 +
===備考===
 +
NLog.configは初期状態でビルド時にコピーされない設定になっていると思うので修正するのを忘れないこと。NLog.configファイルのプロパティの「出力ディレクトリにコピー」の値を「新しい場合のみコピー」または「常にコピー」に設定する。
 +
 
 +
===不具合===
 +
これは2015年8月3日の情報です。
 +
[[Xamarin.Mac]]において「Debugビルド」を行うとアプリ内(***.app内)のMonoBundleディレクトリにNLog.configファイルが生成(コピー)されるが、「Releaseビルド」では生成されないようだ。たぶん[[不具合]]だと思う。
 +
 
 +
==関連項目==
 +
*[[MonoMac/特殊ディレクトリのパスを取得する]]
 +
 
 +
==参考文献==
 
{{reflist}}
 
{{reflist}}
  
 
{{stub}}
 
{{stub}}
 +
 +
[[category:Xamarin.Mac]]
 +
[[category:MonoMac]]

2019年5月22日 (水) 05:13時点における最新版

Xamarin.MacでもNLogを使えると捗る。

実装1[編集 | ソースを編集]

Xamarin.MacでもNLogはなんら問題なく使用できる。NuGetから一発インストールである。試してはいないがMonoMacでも同じだと思う。

ただしファイルに出力する場合に注意が必要で、Mac OS Xではあらゆるファイルアプリの外部に保存する必要があるため、NLog.configファイルの設定例でよく見かける「basedir変数」以下に書き込む設定は使えない。

ファイルに出力するNLog.configの設定例[編集 | ソースを編集]

そこで以下の例ではMac OS Xでは定番の「~/Library/Logs/」以下に出力してみた。

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="false"
      internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log" >

  <variable name="appname" value="monobook"/>

  <targets>
    <target xsi:type="File" name="logfile" 
    	fileName="${specialfolder:folder=MyDocuments}/Library/Logs/${appname}/${shortdate}.log"
        layout="${longdate} ${uppercase:${level}} ${message}" />

    <target xsi:type="Console" name="console" />

  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="logfile" />
    <logger name="*" minlevel="Info"  writeTo="console" />
  </rules>
</nlog>

NLogに設定するパスは絶対パスなので、ホームディレクトリのパスの取得は「MonoMac/特殊ディレクトリのパスを取得する」を用いてMyDocumentsを指定することで取得した。

また、NLog.config中でアプリ名を動的に取得する方法がわからなかったので、この例では自前でappname変数を用意している。

備考[編集 | ソースを編集]

NLog.configは初期状態でビルド時にコピーされない設定になっていると思うので修正するのを忘れないこと。NLog.configファイルのプロパティの「出力ディレクトリにコピー」の値を「新しい場合のみコピー」または「常にコピー」に設定する。

不具合[編集 | ソースを編集]

これは2015年8月3日の情報です。 Xamarin.Macにおいて「Debugビルド」を行うとアプリ内(***.app内)のMonoBundleディレクトリにNLog.configファイルが生成(コピー)されるが、「Releaseビルド」では生成されないようだ。たぶん不具合だと思う。

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]