Plugin do Notepad++ w C#

Jakiś czas temu dowiedziałem się, że można tworzyć pluginy do Notepad++ w C#. Chwila konfiguracji, trochę pomyślunku i pierwszy plugin gotowy. Poniżej dokumentacja i kody do mojego pomysłu na szybki dostęp do logów na różnych środowiskach. Dodatkowo przedstawiłem co należy zrobić aby stworzyć własny plugin do NotePad++

Notepad++ jest całkiem przyjemnym narzędziem programisty. Przez większość czasu podczas programowania można go śmiało wykorzystywać. Jego pluginy mocno nadrabiają braki. Notepad++ jest napisany w C++ ale autor był ambitny i stworzył w miarę sensowne api do tworzenia pluginów. Wartością dodaną jest to, że można tworzyć pluginy bezpośrednio w C# za pomocą winform-sów.

Instalacja

W praktyce wygląda to tak, że ściągamy solucję do Visual Studio z tej strony. Otwieramy solucje i mamy gotowy projekt, który się kompiluje i wypluwa jedną dll-kę, którą to można od razu wgrać do folderu z pluginami i gotowe. Plugin pojawia się z zakładce z pluginami w Notepad++.

Solucja co prawda jest napisana w VS 2010 ale powiem szczerze, że w VS 2015 działa o wiele lepiej niż VS 2013 i VS 2010. Jak by mimo to nie działało to tutaj jest instrukcja co zrobiłem aby było ok. Jednak w VS 2015 nie było problemów.

Update 13-06-2016

Uwaga:

Aby udało się poprawnie skompilować projekt trzeba do Visual Studio dodać pakiet od Visual C++-a. Bez tego solucja się skompiluje ale w okienku Output będzie komunikat, że brakuje programu lib.exe w pewnej lokalizacji. To powoduje, że nie da się dodać pluginu do Notepadd++, bo wyskakuje komunikat o tym, że jest niezgody z aktualną wersją Notepad++. Po zainstalowaniu Visual C++, spokojnie można już korzystać z pluginu w Notepad++.

Kodowanie

Kodowanie wygląda dość prosto. Gotowa solucja poswala wyświetlić okno w jednym z boków notepad++ i korzystać z jego API.

Reszta to:  sky is the limit : )

PrimeLogi

PrimeLogi – jest to plugin do Notepad++, który umożliwia szybki dostęp do katalogów z logami. Jak to wygląda w praktyce ano tak:

Uruchamiam plugin, wybierając go z listy. Następnie wybieram aplikację, która mnie interesuje aby zobaczyć jej log. Następnie wybieram, z którego środowiska (w tym przypadku mam do wyboru 3 miejsca) chce przejrzeć logi. Klikam na plik i logi pojawiają się w zakładce z komunikatem, że udało się je pobrać (dla długich logów trochę to trwa i czasem nie wiadomo, czy logi się pobierają czy Notepad++ się zawiesił)

PrimeLog_Example_Use_4

Kiedy to się przydaje?

Typowy scenariusz to moment gdy oddajemy kody do testów. Kody sobie wędrują ze środowiska deweloperskiego na środowisko testowe, potem na środowisko produkcyjne a potem na regresję. 3-5 miejsc, gdzie może być aplikacja, do tego można sobie wyobrazić kilka aplikacji i każda z nich ma logi w innym miejscu.

Zdaje sobie sprawę, że można to rozwiązać na wiele innych sposobów. Logi mogą się odkładać w jedno miejsce itd. Jednak czasem najprostszy sposób jest najbardziej skuteczny.

Dodatkowo zauważyłem, że gdy do aplikacji trzeba zaglądnąć po jakimś dłuższym czasie wtedy zamiast sobie przypominać, gdzie to jest wystarczy otworzyć plugin i po prostu wybrać aplikację.

PrimeLog

Plugin do Notepad++ napisany w C#.

Instalacja

Aby uzyskać plugin można albo pobrać go z release z github-a albo samemu skompilować ze źródeł. Otrzymaną dll-klę należy wgrać do katalogu Plugin w katalogu z Notepad++-em.

Model

Jedyne czego potrzebujemy aby coś zaprogramować to model! A wiec przedstawiam model danych. Mamy plik logu, który należy do aplikacji A. Aplikacja A jest zainstalowana na serwerach S, S1, S2 itd. Jeśli chcemy przeglądać logi to musimy wejść na serwer S, otworzyć logi aplikacji A. I tak dla każdego serwera.

Więc, żeby było prosto zorganizowałem te logi tak, aby było można je przeglądać w zależności od rodzaju aplikacji(aplikacja A) i od położenia (serwery S, S1, S2) właśnie w takiej kolejności.

Ponieważ logi mogą przyjmować różną formę – xml, json, txt – to można filtrować zawartość katalogu po nazwach plików tak aby było można się dostać do tego pliku lub plików, które nas interesują.

Konfiguracja

Do konfiguracji PrimeLogs służy plik konfiguracyjny xml. Poniżej przykład takiego właśnie pliku


<PrimeLogi>
  <log name="PrimeApi">
    <location name="zt2" path="\\wro67zt2\c$\inetpub\wwwroot\AlsbWebServices\PrimeApi\logs\" filter="log_2016-06*.txt" ></location>
  </log>
</PrimeLogi>

Węzeł log zawiera atrybut name, który służy do rozróżnienia aplikacji, które tworzą logi. Węzeł log składa się z prawie dowolnej ilości węzłów location, które to mają następujące atrybuty:

Nazwa atrybutu Opis
name Nazwa lokalizacji. Najlepiej aby była to nazwa serwera.
path Ścieżka do katalogu z logami.
filter Zwykły filtr plików w katalogu. Dozwolone są proste wyrażenia WildCards

Po skonfigurowaniu wystarczy włączyć Notepadd++, uruchomić plugin i przeglądać logi.

Podsumowanie

Plugin pojawia się w zakładce Wtyczki->Prime Logs. Z menu można wybrać Browser aby wczytać xml-a z konfiguracją i wybrać odpowiednie logi albo Settings aby móc edytować plik konfiguracyjny.

Można również korzystać ze skrótu Ctrl + L, który to od razu prowadzi do przeglądania logów.

Link do kodów na GtiHubie

Link do relase-a – wystarczy ściągnąć, skonfigurować i można śmiało używać.

Wszystkie błędy można zgłaszać na github-ie, do czego gorąco zachęcam. Miłej zabawy.

Jeden komentarz do “Plugin do Notepad++ w C#

  1. Pingback: dotnetomaniak.pl

Możliwość komentowania została wyłączona.