NLog使い方メモ

インストール

Nugetでインストールする。

PM> Install-Package NLog.Config

インストールするとプロジェクトフォルダ配下にconfigファイルが配置される。

f:id:hkou:20160313174619p:plain

ログ出力

class Program
{
    private static Logger logger = LogManager.GetCurrentClassLogger();

    static void Main(string[] args)
    {
        logger.Trace("trace");
        logger.Debug("debug");
        logger.Info("info");
        logger.Warn("error");
        logger.Fatal("fatal");
    }
}

"Fluent Interface"形式でも書ける(こっちの書き方の方が各要素が見やすくて好き)

using NLog.Fluent;
class Program
{
    private static Logger logger = LogManager.GetCurrentClassLogger();

    static void Main(string[] args)
    {
        logger.Debug()
              .Message("debug")
              .Property("a", "a")
              .Property("b", "b")
              .Write();
    }
}

とりあえずファイル出力する用のConfig

<nlog 省略>
  <targets>
    <target
      name="fileTarget"
      xsi:type="File"
      layout="${longdate} [${threadid:padding=8}] [${uppercase:${level:padding=-5}}] ${callsite}() ${message} ${exception:format=tostring}"
      fileName="${basedir}/logs/${date:format=yyyyMMdd}.log"
      encoding="UTF-8"
      archiveFileName="${basedir}/logs/archive.{#}.log"
      archiveEvery="Day"
      archiveNumbering="Rolling"
      maxArchiveFiles="30" />
  </targets>
  <rules>
    <logger name="fileLogger" minlevel="Trace" writeTo="fileTarget" />
  </rules>
</nlog>

ここまではとりあえずログ出力できればいいやの話。

NLogの構成

ほかにも要素あるけど主要な要素だけの簡単な構成を図示してみた。 とりあえず使うだけならこの4つ押さえておけばOK

f:id:hkou:20160313190018p:plain

JSON形式でログ出力する

JsonLayoutを使用する。NLog.Configに以下を記述。

<target name="jsonFile" xsi:type="File" fileName="log.json">
      <layout xsi:type="JsonLayout">
              <attribute name="time" layout="${longdate}" />
              <attribute name="level" layout="${level:upperCase=true}"/>
              <attribute name="message" layout="${message}" />
       </layout>
</target>

独自のプロパティを出力する

Propertyメソッドで指定。

logger.Debug()
      .Message("debug")
      .Property("PropertyAAA", "prop-value")
      .Write();

NLog.configでは以下のLayoutRenderを使う。

${event-properties:item=PropertyAAA}

複数のプロパティを一気に出力したい場合

logger.Debug()
      .Message("debug")
      .Property("PropertyAAA", "prop-value")
      .Property("PropertyBBB", "prop-value")
      .Property("PropertyCCC", "prop-value")
      .Write();

NLog.config

${all-event-properties}

独自のTarget作る

  • TargetWithLayoutを継承したクラスをNLog.Targets内に作成する。
  • Target名称をTargetAttributeで指定
  • Writeメソッドをオーバーライドして出力処理を記述する。
namespace NLog.Targets
{
    [Target("MyTarget")]
    public class MyTarget : TargetWithLayout
    {
        protected override void Write(LogEventInfo logEvent)
        {
            // logEvent.Message
        }
    }
}

NLog.Config

  • extensionsに独自Targetが入ったアセンブリ名を指定する。
<nlog> 
  <extensions> 
    <add assembly="MyAssembly"/> 
  </extensions>
</nlog>

他のTargetのように使う。

<target name="myTarget" xsi:type="MyTarget">

NLog.config内で動的な項目を使う

NLog.configでプログラムから設定した値を使いたい場合

GlobalDiagnosticsContext.Set("myVariable","someValue");

NLog.config

${gdc:item=myVariable}

最近のトレーニングメニュー

最近全体的にまんべんなく扱える重量が上がってなかなか楽しい。

脚トレ

  • スクワット

    • 60kg * 8
    • 80kg * 4
    • 85kg * 4
    • 90kg * 2
    • 100kg * 1
  • レッグプレス

    • 100kg * 10
    • 130kg * 10
    • 150kg * 10
    • 130kg * 10
    • 100kg * 10
  • レッグエクステンション

    • 40kg * 10
    • 50kg * 10
    • 40kg * 10 * 2
  • カーフレイズ

    • 60kg * 15
    • 70kg * 15
    • 60kg * 10
    • 60kg * 10

背筋・僧帽筋トレ

  • デッドリフト

    • 60kg * 10
    • 70kg * 7
    • 80kg * 5
    • 70kg * 6
  • マシンロウイング

    • 40kg * 10 * 2
    • 50kg * 10
    • 60kg * 10
  • ラットプルダウン

    • 50kg * 10 * 2
    • 60kg * 10
  • バーベルシュラッグ

    • 60kg * 10 * 3
  • ダンベルシュラッグ

    • 30kg * 10 * 3

胸筋トレ

  • ベンチプレス

    • 50kg * 10
    • 60kg * 8
    • 65kg * 6
    • 70kg * 4
    • 75kg * 2
  • チェストプレス(上側)

    • 40kg * 10
    • 50kg * 10
    • 40kg * 10
  • チェストプレス(下側)

    • 40kg * 10
    • 60kg * 10
    • 50kg * 10
    • 40kg * 10
  • ダンベルベンチプレス

    • 14kg * 10 * 2
    • 12kg * 10
  • ディップス

    • 自重 * 10 * 3

肩トレ

  • フロントプレス(スミスマシン)

    • 35kg * 10
    • 45kg * 10
    • 40kg * 10
    • 30kg * 10
  • ショルダープレス(ダンベル)

    • 12kg * 10 * 3
  • フロントレイズ

    • 12kg * 10 * 3

腕トレ

  • バーベルカール

    • 30kg * 10 * 2
    • 20kg * 10
  • マシントライセプスエクステンション

    • 40kg * 10
    • 50kg * 10
    • 40kg * 10
  • ハンマーカール(ダンベルオルタネート)

    • 20kg * 10
    • 16kg * 10
    • 14kg * 10
  • ケーブルプッシュダウン

    • 24kg * 10
    • 20kg * 10
    • 16kg * 10

年末年始の温泉巡り

年末年始にかけて福島、栃木、群馬周辺の面白そうな温泉を巡ってきました。

福島県 高湯温泉

一番最初に入った温泉。他のお客さんがいたので中の写真は撮れなかった。この旅行中に入った温泉の中で一番強烈な硫黄臭を放つ温泉でした。最近硫黄泉に入ってなかったので久しぶりに入れて大満足 f:id:hkou:20151231142447j:plain

福島県 湯ノ花温泉 石湯

高湯温泉でウダウダしてたら到着したのが夜遅くになってしまった。この時間帯なので自分たち以外にお客さんはおらず写真撮り放題でした。温度がめちゃくちゃ熱くて加水しないととてもじゃないけど入れない f:id:hkou:20151231204449j:plain f:id:hkou:20151231210552j:plain f:id:hkou:20151231210558j:plain f:id:hkou:20151231211211j:plain f:id:hkou:20151231211216j:plain

福島県 木賊温泉(とくさおんせん)

2016年1月1日元旦の早朝に入った温泉、なのでこれが今年初温泉になる。
川沿いにある温泉で川との高低差は殆どない、増水したときはたぶん温泉に川の水が逆流してくると思う。 f:id:hkou:20160101070434j:plain f:id:hkou:20160101070709j:plain f:id:hkou:20160101070819j:plain 窓から川が見える f:id:hkou:20160101070935j:plain f:id:hkou:20160101071623j:plain

栃木県 川治温泉 薬師の湯

これもなかなか面白い温泉だった。内湯と露天(混浴)の2つがあるのだが露天風呂の方は外から丸見えで通行客からもばっちり見える。その分露天風呂側から景色もよく見えて開放感があって良い。 f:id:hkou:20160101111324j:plain f:id:hkou:20160101111334j:plain

群馬県 尻焼温泉

今回の旅行で一番印象に残った温泉。今まで入った温泉とは格が違った。
到着したのが夜10時ぐらいだったのであたりは真っ暗、温泉へ行くまでの道、温泉自体も電気が通っているわけではないためライトは必須である。この日は暗すぎてよく分からなかったのでまた明日出直すことにした。 f:id:hkou:20160101224647j:plain f:id:hkou:20160101224622j:plain

朝になってまた来てみると全貌がよく分かった。

f:id:hkou:20160102070329j:plain f:id:hkou:20160102070422j:plain

右側の建物が内湯兼更衣室的なところで、左側の川っぽく見えるところがなんと温泉になっているのだ。
下の段と上の段に分かれており下の段はぬるくて、上の段はちょうどいいので上の方に入ったほうが良い。

f:id:hkou:20160102070437j:plain

上の段
一見するとただの川だ。でも丁度良い熱さなので中に入れる。真冬に川に裸で入れるというのはなかなか体験出来ないだろう。非常に面白い。 ただ潔癖症の人にはあまりオススメしない、良くも悪くも自然のままなので藻とか落ち葉とかが入っている。 f:id:hkou:20160102070606j:plain

内湯もあるけど、せっかく来たなら是非露天の方にも入ってみて欲しい。 f:id:hkou:20160102073717j:plain f:id:hkou:20160102073744j:plain

群馬県 草津温泉

尻焼温泉のすぐ近くにあったので寄ってみたが観光客が多くてちょっとゲンナリした。 f:id:hkou:20160102091549j:plain f:id:hkou:20160102092138j:plain f:id:hkou:20160102092219j:plain

岐阜県 奥飛騨温泉郷平湯 平湯民俗館

この温泉巡りのシメに入ったところ。丁度お客さんがいない状態だったので中も撮影ができた。鉄を多く含んだ泉質 f:id:hkou:20160102181443j:plain f:id:hkou:20160102181522j:plain f:id:hkou:20160102181803j:plain f:id:hkou:20160102182008j:plain

最近のトレーニングメニュー

今のところ、1週間に上半身メニューを3日、下半身メニューを1日でやっている。

Pull day

  • マシンロウイング
    • 40kg * 10 * 2
    • 50kg * 10
    • 60kg * 10
  • ラットプルダウン
    • 50kg * 10 * 2
    • 60kg * 10
  • ダンベルシュラッグ
    • 28kg * 10 * 3
  • マシンアームカール
    • 20kg * 10 * 2
    • 30kg * 10
    • 35kg * 10
  • ハンマーカール
    • 10kg * 10 * 3

Push day

  • ベンチプレス
    • 20kg * 10
    • 40kg * 10
    • 50kg * 10
    • 60kg * 10
  • ディップス
    • 自重 * 15 * 3
  • ダンベルショルダープレス
    • 7kg * 10 * 2
    • 8kg * 10
  • マシントライセプスエクステンション
    • 20kg * 10
    • 30kg * 10 * 2
  • ケーブルプッシュダウン
    • 20kg * 10 * 3
  • サイドレイズ
    • 7kg * 10 * 3
  • フロントレイズ
    • 10kg * 10 * 3

Leg day

  • スクワット
    • 20kg * 15
    • 40kg * 10 * 2
    • 50kg * 8
    • 60kg * 6
  • レッグプレス
    • 40kg * 10 * 3
  • レッグエクステンション
    • 20kg * 10
    • 30kg * 10 * 2
  • カーフレイズ
    • 20kg * 15
    • 30kg * 15
    • 40kg * 10

Pull And Push day

PullメニューとPushメニューを一日でやる