AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 09.06.2006, 17:52   #1  
kashperuk is offline
kashperuk
Участник
kashperuk's Avatar
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Join Date: 30.05.2004
Location: Atlanta, GA, USA
Angry InfoLog Trouble
Может кто-то разъяснить мне, почему так происходит?
Code:
    setPrefix("Prefix 1");
    for (i = 1; i < 2; i++)
    {
        setPrefix('method1');
        method1();
    }
    for (i = 1; i < 2; i++)
    {
        setPrefix('method2');
        method2();
    }
дает правильный результат. То есть, идет общий header - и потом под ним первый метод и все его сообщения, а потом второй - на ТОМ ЖЕ УРОВНЕ, что и первый.

Если же пишу без цикла (если заметили, он вызывается только 1 раз)
Code:
    setPrefix("Prefix 1");
    setPrefix('method1');
    method1();
    setPrefix('method2');
    method2();
то выводить второй префикс (method2) как подузел первого. Спасибо

P.S. А если не указать первый самый префикс (Prefix 1), то второй префикс методов (method2) вообще не выводится, все сообщения выводятся под первым префиксом.
Old 09.06.2006, 18:11   #2  
belugin is offline
belugin
Участник
belugin's Avatar
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Join Date: 16.01.2004
Blog Entries: 5
вынести в функцию или добавлять \t
http://erpkb.com/Axapta/infolog
X++:
void test1()
{
    setPrefix('method1');
    info('test');
}
void test2()
{
    setPrefix('method2');
    info('test2');
}
;
setPrefix("Prefix 1");
test1(); test2();

Last edited by belugin; 09.06.2006 at 18:14.
This post has been rated by: decoder (1).
Old 09.06.2006, 18:45   #3  
kashperuk is offline
kashperuk
Участник
kashperuk's Avatar
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Join Date: 30.05.2004
Location: Atlanta, GA, USA
Так а почему так происходит?

У меня на самом деле они устанавливаются в методе, который вызывается из метода method1() и method2() - и вызывается один и тот же метод. (с разными параметрами)

И вот при этом я получил такую фигню.
Old 10.06.2006, 09:48   #4  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Join Date: 20.08.2005
Значение, установленное SetPrefix(), автоматически сбрасывается при выходе за пределы блока, в котором оно было установлено. Блок - это набор инструкций, находящийся в теле функции или цикла. Для цикла каждая итерация считается за отдельный блок.
Например,
X++:
SetPrefix("Prefix");
for (i=1;i<=10;i++)
{
    SetPrefix("Block " + int2str(i));
    info("Блок выполнен");
}
выведет информацию в разных ветках infolog'а
Проследить, что происходит при вызове SetPrefix() и выходе из предела блока можно с помощью функции GetPrefix(). Она возвратит последовательный набор значений, установленный предыдущими вызововами SetPrefix(), разделенными табуляцией. Infolog при показе сообщений, по умолчанию, прицепляет значение, возвращаемое GetPrefix() впереди текста сообщения и по разделителям (табуляции), строит дерево сообщений. На этом основана возможность строить дерево сообщений без вызова SetPrefix() просто вставляя "\t" в текст.

В приведенных выше примерах в первом случае при выходе из пределов блока, ограниченного циклом, значение префикса возвращается в "Prefix 1" и при последующем вызове новое значение прибавляется к нему.

Во втором примере новый префикс добавляется к уже существующему, по-этому получается вложенность.

В случае, если SetPrefix() вызывается во вложенной функции, то при возврате из нее этот префикс сбрасывается. Надо устанавливать префикс либо в вызвающей функции либо в функции более высокого уровня
__________________
Axapta v.3.0 sp5 kr2
This post has been rated by: belugin (2), denilson (0), Jackally (1), SVlk (1).
Tags
info, infolog, setprefix

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
gatesasbait: How to temporarily suppress infolog messages in Dynamics Ax (deux) Blog bot DAX Blogs 7 28.01.2009 17:45
DAX 4.0: infolog & workspaceNum petergunn DAX: Программирование 3 22.01.2009 11:32
gatesasbait: How to temporarily suppress infolog messages in Dynamics Ax Blog bot DAX Blogs 0 10.12.2008 00:06
Kashperuk Ivan: SysInfoAction class description - Improve your Infolog Blog bot DAX Blogs 0 17.09.2008 03:23
casperkamal: Customizing Infolog through SysInfoAction Blog bot DAX Blogs 0 30.01.2007 20:20

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 08:32.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.