2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JUCEでのログ出力関係整理

Last updated at Posted at 2021-09-27

VST/AUでのログ出力準備

ビルドと同時にAudio Plugin Hostを起動することでログを確認する。
ダブルクリックで追加可能なプラグイン一覧が表示されるので確認したいプラグインを選択して追加する。
Editor関係は追加されたプラグインをダブルクリックしてUIが表示されたタイミングからログが確認できる。
一覧に無い場合は⌘(ctrl)+P > 左下Options... > scan for new or update ○◯ plug-insを実行すると一覧に表示されるようになる

Xcode(mac)

Edit Scheme > Run > ExecuteAudio Plugin Hostを選択
Screen Shot 2021-09-27 at 15.43.19.png
Screen Shot 2021-09-27 at 15.41.44.png

Visual Studio(windows)

以下はVisualStudio上でログを確認するための手順ですが作業量が多いので後述のFileLoggerを使用するのが無難かもしれません。

管理者権限でVisual Studioを起動させる

デスクトップ等にショートカットを作成し、右クリック > 管理者として実行 で管理者権限で起動できる。
projucerから出力した際に対応できるように常に管理者権限で開くには以下のリンクのように
VisualStudioのファイルの場所に移動し、
devenv.exe右クリック > 互換性のトラブルシューティング > 問題のトラブルシューティング > 「プログラムにアクセスするには追加のアクセス許可が必要になる」にチェックすることで可能になる。

AudioPluginHostをビルド後に自動で起動させる

ソリューションエクスプローラーにて「プロジェクト名_VST3」を選択して右クリック > スタートアッププロジェクトに設定

ソリューションエクスプローラで「プロジェクト名_VST3」を右クリック>プロパティ等でプロパティページ を開き
・左上の構成で「すべての構成」を選択
・構成プロパティ/デバッグ > コマンドにAudioPluginHost.exeのパスを指定

ProjucerでVisual Studio20xxのDebug/Releaseを選択、
Post-build Commandstart AudioPluginHost.exeのフルパスと記述

ただし、この方法だとVST以外(SharedCode等)のビルド時にもAudioPluginHostが起動してしまうので
起動させたくないプロジェクト(SharedCode等)のプロパティ > ビルドイベント > ビルド後のイベント > コマンドライン を何も記述されていない状態にしておく

プラグインをVST3ディレクトリにコピー

VST3のデフォルトパスであるC:¥Program Files¥Common Files¥VST3にビルド後に自動で追加されるようにする。

プロパティ > 構成プロパティ/ビルドイベント > ビルド後のイベント にて
コマンドラインにxcopy "$(TargetPath)" "$(CommonProgramW6432)¥VST3¥" /Yと記述

C:¥Program Files¥Common Files¥VST3フォルダがなければ作成しておく。
ProjucerでVisual Studio20xxのDebug/Releaseを選択、
EnablePluginCopyStepEnableに指定
VST3BinaryLocation$(CommonProgramW6432)\VST3と記述

プロセスのアタッチ

ビルド & AudioPluginHostの起動後、デバッグ > プロセスにアタッチ > 使用可能なプロセスからAudioPluginHostを選択しアタッチすることでログが確認できるようになる。

※毎回この作業をするのが面倒なので自動的にアタッチする方法をご存知の方はご指摘いただけると助かります。。

ログ出力

DBG()

シンプルなログ出力

    int hoge = 1;
    DBG("hoge: " << hoge); // hoge: 1

FileLogger

FileLoggerを使用してログをテキストファイルに出力することができる。

FileLoggerはDBGの実体に使われているLoggerの継承クラスであり、個別にインスタンスを作るよりDBGの出力先を変更する使い方が良さそう。
->windowsのDBG()はLoggerが使われていないためLogger::getCurrentLogger()->WriteToLog()を使うようにしてファイル書き出ししたい場合はFileLoggerをcurrentLoggerに設定するのが良さそう。

    // ユーザー/Library/Logs/JUCE/test_日付.txtにログ出力される。ログ冒頭にstart logging.と記述される。
    FileLogger* fileLogger = FileLogger::createDateStampedLogger("JUCE", "test_", ".txt", "start logging.");

    // ユーザー/Library/Logs/JUCE/test.txtにログ出力される。ログ冒頭にstart logging.と記述される。
    fileLogger = FileLogger::createDefaultAppLogger("JUCE", "test.txt", "start logging.");

    // [Mac] プラグインパッケージ/Contents/log.txtにログ出力される。ログ冒頭にstart logging.と記述される。
    fileLogger = new FileLogger(File::getSpecialLocation(File::currentApplicationFile)
                           .getChildFile("Contents")
                           .getChildFile("log.txt"),
                           "start logging.");

    // [Windows] C:¥Program Files¥Common Files¥VST3¥log.txtにログ出力される。ログ冒頭にstart logging.と記述される。
    fileLogger = new FileLogger(File::getCurrentWorkingDirectory().getChildFile("log.txt"), "start logging.");

    // インスタンスを使用してログ出力
    fileLogger->logMessage("test");

    // FileLoggerを使用してログの出力先をテキストファイルに変更
    Logger::setCurrentLogger(fileLogger); 
    Logger::getCurrentLogger()->WriteToLog("hoge");
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?