log object property not find when used in a class

serge calderara
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
June 25, 2020

Dear all,

I have a class object define in a groovy file named NewUser as below :

import org.apache.log4j.Logger
import org.apache.log4j.Level

class NewUser{

NewUser(Issue issue, boolean Prod)
{
    log.setLevel(Level.DEBUG)
}

}

I need to record different log information from that class but when setting the log.SetLevel, I get an error saying :

No such property: log for class: ServiceRequest.NewUser

Any idea why it cannot find the log property ?

regards

2 answers

Suggest an answer

Log in or Sign up to answer
1 vote
serge calderara
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
July 1, 2020

Hello @Mathis Hellensberg , I find out the issue.

The way you describe to initiate the Log object creation is only available for use in InLine script.

In my case my class is define in a script file and the way to initiate the log creation is to decorate the class with the syntax  @Log4j and the log objects gets available globally

regards

serge

Mathis Hellensberg
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
July 1, 2020

Nice, the more you know :)

0 votes
Mathis Hellensberg
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
June 29, 2020

Hi @serge calderara 

This should work:

import org.apache.log4j.Logger
import org.apache.log4j.Level

class NewUser{

NewUser(Issue issue, boolean Prod) {

def log = Logger.getLogger(NewUser.class)
log.setLevel(Level.DEBUG)
log.debug("hello world!")

}

}
serge calderara
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
June 30, 2020

hi @Mathis Hellensberg , it does not work.

I have a red cross saying unexpected token :-( at the time I enter the line :

log.setLevel(Level.DEBUG)
Mathis Hellensberg
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
July 1, 2020

Hmm I tested that this worked for me (Jira 8.6.1):

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import org.apache.log4j.Logger
import org.apache.log4j.Level

def issueManager = ComponentAccessor.issueManager
def issue = issueManager.getIssueObject("SD-47")

class NewUser {

NewUser(Issue issue, boolean Prod) {

def log = Logger.getLogger(NewUser.class)
log.setLevel(Level.DEBUG)
log.debug("hello world!")

}
}

def test = new NewUser(issue, false)
log.info(test) 

 Do you have anything else in your script? Where are you using the script? Is it a post-function, a listener or?

serge calderara
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
July 1, 2020

I get the following exception when the script run :

groovy.lang.MissingPropertyException: No such property: log for class: ServiceRequest.NewUser at ServiceRequest.NewUser.InviteUser(NewUser.groovy:163) at ServiceRequest.NewUser$InviteUser.call(Unknown Source) at Script42.run(Script42.groovy:88)

My newUser class instance creation is done from the InLine script area of a post-function in a worflow .

here is the content of the class :

package ServiceRequest
import MsGraphApi.Helper

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.comments.CommentManager

import groovy.json.*
import groovyx.net.*
import groovyx.net.http.*
import static groovy.json.JsonOutput.*
import static groovyx.net.http.ContentType.*
import static groovyx.net.http.Method.*

import org.apache.log4j.Logger
import org.apache.log4j.Level

class NewUser{

Helper apiHelper
Issue refIssue

//Field defienition constant to be read from issue
String emailFieldName="Email Address" //10523
String FnameFieldName="First Name"
String LnameFieldName="Last Name"
String AgencyFieldName="Agency"

String emailFieldValue=""
String agencyFieldValue=""
String FnameFieldValue=""
String LnameFieldValue=""

String GroupId_Member_To_Add

CommentManager commentMgr=ComponentAccessor.getCommentManager()



NewUser(Issue issue, boolean Prod)
{

def log = Logger.getLogger(NewUser.class)
log.setLevel(Level.DEBUG)

apiHelper=new Helper(Prod,"RLX-DIGITAL")

refIssue=issue
def customFieldMgr=ComponentAccessor.getCustomFieldManager()

def emailField =customFieldMgr.getCustomFieldObjects().findByName(emailFieldName)
emailFieldValue=refIssue.getCustomFieldValue(emailField)


def FnameField =customFieldMgr.getCustomFieldObjects().findByName(FnameFieldName)
FnameFieldValue=refIssue.getCustomFieldValue(FnameField)

def LnameField =customFieldMgr.getCustomFieldObjects().findByName(LnameFieldName)
LnameFieldValue=refIssue.getCustomFieldValue(LnameField)

def AgencyField =customFieldMgr.getCustomFieldObjects().findByName(AgencyFieldName)
agencyFieldValue=refIssue.getCustomFieldValue(AgencyField)

if (Prod) //If we are in Prodution we get group ID as expected
GetGroupId(agencyFieldValue)
else // Not in prod we test it agains a Test AD account
GroupId_Member_To_Add= GRP_TEST_AGENCY_ITECOR_ID


}

// Main field property return methods
public String GetToken(){return apiHelper.Token}
public String GetEmailValue(){return emailFieldValue}
public String GetFirstNameValue(){return FnameFieldValue}
public String GeLastNameValue(){return LnameFieldValue}
public String GeLAgencyValue(){return agencyFieldValue}
public String GetGroupId(){return GroupId_Member_To_Add}


/*============================================================
Method: MapGroupFromAgency
Identifiy groups ID to which user need to be added
============================================================*/
String GetGroupId(String Agency){

.......

}


/*============================================================
Method: InviteUser
Send invitation to user for joining group
============================================================*/
public boolean InviteUser(){

boolean userInvited=true
boolean userAddedtoGrp=false
boolean userCreated=false

// get user id
String userId= apiHelper.inviteUser(apiHelper.Token,emailFieldValue,FnameFieldValue,LnameFieldValue)

if (userId == null || userId.trim().isEmpty()) {
log.error("ITECOR SCRIPT : User failure to be added as guest in active directory [$emailFieldValue]")

}
else
{
userCreated=true

log.debug("ITECOR SCRIPT : User to invite : " + emailFieldValue)
log.debug("ITECOR SCRIPT : User ID to invite created : " + userId)
log.debug("ITECOR SCRIPT : ISSUE STATUS : " + refIssue.status.name)

// add user to group sample
userAddedtoGrp=apiHelper.addUserToGroup(apiHelper.Token,userId,GroupId_Member_To_Add)

//log.debug("ITECOR SCRIPT : User added to group : " + userAddedtoGrp.toString())

if (userAddedtoGrp){
def reportMsg="""
*Default application access request *\n\n
Dear [~${refIssue.reporter.getName()}], Your request has been assigned to our Team.\n
*Status :* Pending for invitation approvment.\n
An invitation email has been sent to user *$emailFieldValue*\n
Thanks to let us know when *$FnameFieldValue* *$LnameFieldValue* has access to requested application
\n Regards\n Service Desk Team"""

commentMgr.create(refIssue,refIssue.getAssignee(),reportMsg,true)

}
else{
log.debug("ITECOR SCRIPT : Failed adding user to group")

}
}

if (userAddedtoGrp && userInvited)
{
log.debug("ITECOR SCRIPT : User onboarding succesfully completed : " )
userInvited=true
}
else
{
userInvited=false
log.debug("ITECOR SCRIPT : User onboarding NOT completed [userId: $userCreated, [AddToGroup : $userAddedtoGrp] " )

}
userInvited
}
}

 

The exception is raised at the execution of the first log entry find in the InviteUser method . Seems that the log object is not visible inside a Method of the class which need to use it.

Thanks for help

regards

Mathis Hellensberg
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
July 1, 2020

Hmm this error "ServiceRequest.NewUser$InviteUser.call(Unknown Source) at Script42.run(Script42.groovy:88)" is beacuse you just have "........" at line 88.

Can you fix that and post the new error?

serge calderara
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
July 1, 2020

No the ..... at line 88 is because I have removed some sensitive data before posting the code in this forum..

Seems to me that the log object is not visible inside the method

any idea ?

TAGS
AUG Leaders

Atlassian Community Events